آموزش وراثت سند در MongoEngine
آموزش وراثت سند در MongoEngine
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش وراثت سند در MongoEngine خواهیم پرداخت.
پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون
تعریف کلاس ارثی از هر کلاس طبقه بندی شده توسط کاربر ، امکان پذیر است. در صورت لزوم، کلاس موروثی ممکن است قسمتهای اضافی را اضافه کند با این حال، از آنجا که مانند یک کلاس زیر کلاس مستقیم از کلاس Document نیست، مجموعه جدیدی ایجاد نخواهد کرد، در عوض اشیا آن در مجموعه ای استفاده می شود که توسط کلاس اصلی آن استفاده می شود. در کلاس والد ، ویژگی متا ‘allow_inheritance به عنوان مثال زیر، ابتدا کارمند را به عنوان کلاس سند تعریف می کنیم و allow_inheritance را به true تنظیم می کنیم. کلاس حقوق و دستمزد از کارمند گرفته می شود و دو رشته دیگر را به عنوان بخش و سال اضافه می کند. اشیا مربوط به کارمندان و همچنین کلاس های حقوق و دستمزد در مجموعه کارمندان ذخیره می شود.
در مثال زیر، ابتدا کارمند را به عنوان کلاس مستند تعریف کرده و allow_inheritance را به true تنظیم می کنیم. کلاس حقوق و دستمزد از کارمند گرفته می شود و دو رشته دیگر را به عنوان بخش و نمره اضافه می کند. اشیا of مربوط به کارمندان و همچنین کلاس های حقوق و دستمزد در مجموعه کارمندان ذخیره می شود.
1 2 3 4 5 6 7 8 9 10 11 |
from mongoengine import * con=connect('newdb') class employee (Document): name=StringField(required=True) branch=StringField() meta={'allow_inheritance':True} class salary(employee): dept=StringField() sal=IntField() e1=employee(name='Bharat', branch='Chennai').save() s1=salary(name='Deep', branch='Hyderabad', dept='Accounts', sal=25000).save() |
ما می توانیم بررسی کنیم که دو سند در مجموعه کارمندان به شرح زیر ذخیره شده است –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "_id":{"$oid":"5ebc34f44baa3752530b278a"}, "_cls":"employee", "name":"Bharat", "branch":"Chennai" } { "_id":{"$oid":"5ebc34f44baa3752530b278b"}, "_cls":"employee.salary", "name":"Deep", "branch":"Hyderabad", "dept":"Accounts", "sal":{"$numberInt":"25000"} } |
توجه داشته باشید که ، برای شناسایی کلاس Document مربوطه ، MongoEngine یک قسمت “_cls” اضافه می کند و مقدار آن را به عنوان “کارمند” و “کارمند. حقوق” تعیین می کند.
اگر می خواهید به گروهی از کلاس های Document قابلیت اضافی ارائه دهید ، اما بدون وارث اضافی ، می توانید ابتدا یک کلاس انتزاعی ایجاد کنید و سپس یک یا چند کلاس از همان کلاس استخراج کنید. برای انتزاع کلاس ، ویژگی متا «انتزاعی» روی True تنظیم می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from mongoengine import * con=connect('newdb') class shape (Document): meta={'abstract':True} def area(self): pass class rectangle(shape): width=IntField() height=IntField() def area(self): return self.width*self.height r1=rectangle(width=20, height=30).save() |
لیست جلسات قبل آموزش MongoEngine
- آموزش MongoEngine
- آموزش MongoDB در MongoEngine
- آموزش قطب نما MongoDB در MongoEngine
- آموزش نگاشت کننده اسناد شی در MongoEngine
- آموزش نصب MongoEngine
- آموزش اتصال به پایگاه داده MongoDB در MongoEngine
- آموزش کلاس Document در MongoEngine
- آموزش طرح پویا در MongoEngine
- آموزش کلاس Field در MongoEngine
- آموزش افزودن / حذف سند در MongoEngine
- آموزش استعلام پایگاه داده در MongoEngine
- آموزش فیلترها در MongoEngine
- آموزش عملگرهای Query در MongoEngine
- آموزش روش های QuerySet در MongoEngine
- آموزش مرتب سازی در MongoEngine
- آموزش مجموعه کوئری های سفارشی در MongoEngine
- آموزش نمایه ها در MongoEngine
- آموزش aggregation در MongoEngine
- آموزش جستجوی پیشرفته در MongoEngine
دیدگاه شما