در این تمرین از شما میخواهیم چند مدل ساده را پیادهسازی کنید.
پروژهی اولیه
پروژهی اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه بهصورت زیر است.
quera_challenge/
├── manage.py
├── requirements.txt
├── app
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ ├── __init__.py
│ │ └── 0001_initial.py
│ ├── > models.py<
│ ├── > serializers.py<
│ ├── tests.py
│ ├── urls.py
│ └── > views.py <
├── config
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
│ └── auth.py
پایگاهداده و مدلهایی که باید تکمیل شوند
پروژه (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 با ساختار مشابه با پروژه اولیه را آپلود کنید.
ارسال پاسخ برای این سؤال