در این تمرین از شما میخواهیم چند مدل ساده را پیادهسازی کنید.
پروژهی اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه بهصورت زیر است.
Project
)🔗title
): عنوان پروژهdescription
): توضیحات پروژهManyToMany
) با User
از طریق مدل شخصیسازیشدهی Membership
): اعضای شرکتکننده در پروژهCategory
): دستهبندی مرتبط با پروژهcreated_at
): زمان ایجاد پروژهupdated_at
): زمان آخرین بهروزرسانی پروژهCategory
)🔗name
): نام دستهبندیparent
به خود مدل Category
وصل میشود)RoleType
)🔗IntegerChoices
پیادهسازی میشود."MEMBER" = 0, "member"
: عضوی که دسترسی معمولی دارد و تنها بهعنوان شرکتکننده در پروژه حضور دارد."OWNER" = 1, "owner"
: مالک پروژه که دسترسی مدیریتی و تصمیمگیری در پروژه را دارد.Membership
)🔗person
(کلید خارجی به User
): فرد شرکتکننده در پروژهproject
(کلید خارجی به Project
): پروژهای که فرد در آن شرکت داردrole
): نقش فرد در پروژه (عضو یا مالک) که از بین گزینههای مدل Roletype
انتخاب میشود.ProjectSerializer
🔗فیلدها:
title
: عنوان پروژهdescription
: توضیحات پروژهcategory
: دستهبندی پروژهmembers
: فهرستی از id اعضای پروژهcreated_at
: تاریخ ایجاد پروژهupdated_at
: تاریخ آخرین بهروزرسانی پروژهProjectListView
🔗این کلاس یک ویوی لیستی از پروژهها را فراهم میکند که در آن کاربران احرازهویتشده میتوانند پروژههای موجود را مشاهده کنند.
ListAPIView
از جنگو رست فریمورک برای ارائه یک لیست از اشیاء مدلها استفاده میشود.IsAuthenticated
اجازهی دسترسی به این ویو را دارند.ProjectSerializer
برای تبدیل دادههای مدل به فرمت مناسب JSON استفاده میکند.models.py
، views.py
، serializers.py
و را دارید و تمامی تغییرات دیگر شما در فایلهای پروژه نادیده گرفته خواهند شد.project
و person
در مدل MemberShip
باید unique
باشند.Project
براساس تاریخ آخرین تغییر order میشوند.User
و Project
از طریق مدل MemberShip
رابطهی ManyToMany
برقرار میکنند.شما باید یک فایل ZIP با ساختار مشابه با پروژه اولیه را آپلود کنید.