آموزش وراثت سند در MongoEngine

3 سال پیش

آموزش وراثت سند در MongoEngine

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش وراثت سند در MongoEngine خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون

تعریف کلاس ارثی از هر کلاس طبقه بندی شده توسط کاربر ، امکان پذیر است. در صورت لزوم، کلاس موروثی ممکن است قسمتهای اضافی را اضافه کند با این حال، از آنجا که مانند یک کلاس زیر کلاس مستقیم از کلاس Document نیست، مجموعه جدیدی ایجاد نخواهد کرد، در عوض اشیا آن در مجموعه ای استفاده می شود که توسط کلاس اصلی آن استفاده می شود. در کلاس والد ، ویژگی متا ‘allow_inheritance به عنوان مثال زیر، ابتدا کارمند را به عنوان کلاس سند تعریف می کنیم و allow_inheritance را به true تنظیم می کنیم. کلاس حقوق و دستمزد از کارمند گرفته می شود و دو رشته دیگر را به عنوان بخش و سال اضافه می کند. اشیا  مربوط به کارمندان و همچنین کلاس های حقوق و دستمزد در مجموعه کارمندان ذخیره می شود.

در مثال زیر، ابتدا کارمند را به عنوان کلاس مستند تعریف کرده و allow_inheritance را به true تنظیم می کنیم. کلاس حقوق و دستمزد از کارمند گرفته می شود و دو رشته دیگر را به عنوان بخش و نمره اضافه می کند. اشیا of مربوط به کارمندان و همچنین کلاس های حقوق و دستمزد در مجموعه کارمندان ذخیره می شود.

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()

 

ما می توانیم بررسی کنیم که دو سند در مجموعه کارمندان به شرح زیر ذخیره شده است –

{
"_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 تنظیم می شود.

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

  1. آموزش MongoEngine
  2. آموزش MongoDB در MongoEngine
  3. آموزش قطب نما MongoDB در MongoEngine
  4. آموزش نگاشت کننده اسناد شی در MongoEngine
  5. آموزش نصب MongoEngine
  6. آموزش اتصال به پایگاه داده MongoDB در MongoEngine
  7. آموزش کلاس Document در MongoEngine
  8. آموزش طرح پویا در MongoEngine
  9. آموزش کلاس Field در MongoEngine
  10. آموزش افزودن / حذف سند در MongoEngine
  11. آموزش استعلام پایگاه داده در MongoEngine
  12. آموزش فیلترها در MongoEngine
  13. آموزش عملگرهای Query در MongoEngine
  14. آموزش روش های QuerySet در MongoEngine
  15. آموزش مرتب سازی در MongoEngine
  16. آموزش مجموعه کوئری های سفارشی در MongoEngine
  17. آموزش نمایه ها در MongoEngine
  18. آموزش aggregation در MongoEngine
  19. آموزش جستجوی پیشرفته در MongoEngine
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه