فرهاد که از این اوضاع نابسامان زندگی خسته شده است، تصمیم به مهاجرت میگیرد؛ ولی از آنجایی که به مقدار کافی، پول برای مهاجرت ندارد، تصمیم گرفت این مهاجرت را روی دادههای پروژهی خود پیادهسازی کند و آنها را از شر این زندگی نجات دهد.
ولی از آنجایی که به افسردگی ناشی از عدم مهاجرت مبتلا شده، به کمک شما برای انجام این کار نیاز دارد.
پروژه اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است:
اپلیکیشن blog
فقط شامل یک مدل به نام Article
است که این مدل شامل فیلدهای زیر میباشد:
author
: نام کاربری نویسندهی مقالهtitle
: عنوان مقالهcategory
: عنوان دستهبندی مقالهbody
: متن مقالهcreated
: زمان ایجاد مقاله (این فیلد به طور خودکار در زمان ایجاد مقاله جدید مقداردهی میشود.)فیلد author
باید به جای نام کاربری نویسنده به شئ User متناظر آن نویسنده اشاره کند (تضمین میشود مقدار فیلد برابر نام کاربری کاربر معتبر و موجود در پایگاه داده است.). همچنین در صورت حذف یک کاربر باید تمام مقالات نوشتهشده توسط آن کاربر حذف شود.
فیلد category
باید به شئ متناظر از مدل Category اشاره کند و در صورتی که آن شئ حذف شد باید برابر null قرار گیرد.
برای این کار باید مدل Category را پیادهسازی کنید. این مدل باید شامل فیلدهای زیر باشد:
title
: عنوان دستهبندی (از نوع CharField و حداکثر طول ۵۰) status
: فعال بودن دسته بندی (از نوع BooleanField و مقدار پیشفرض True) دقت کنید مقالات فعلی ممکن است دستهبندیهای یکسانی داشته باشند. در نتیجه باید به شئ یکسانی از مدل Category اشاره کنند. همچنین فیلد category
مقالات فعلی موجود در پایگاه داده بعد از اعمال مایگریشن باید برابر شئ از مدل Category شود که فیلد title
آن برابر مقدار فعلی فیلد category
باشد (برای درک بهتر این دو جمله به عکس زیر دقت کنید.).
updated
که از نوع DateTimeField است و بعد از هر بار تغییر شئ (فراخوانی تابع save) برابر زمان بروزرسانی میشود و برای مقالات فعلی برابر فیلد created
است.published
که از نوع DateTimeField است و به صورت پیشفرض برابر زمان حال (timezone.now
) است و برای مقالات فعلی برابر فیلد created
است.status
که از نوع CharField است و میتواند برابر دو مقدار p
و d
باشد و به صورت پیشفرض برابر d
است و حتما باید مقدار داشته باشد. (p
به معنای منتشر شده یا publish
و d
به معنای پیشنویس یا draft
) و برای مقالات فعلی برابر p
است.blog/models.py
و blog/migrations
را دارید و تمامی تغییرات دیگر شما در فایلهای پروژه نادیده گرفته خواهند شد.blog/migrations/0001_initial.py
تغییری ایجاد کنید.testsample.py
با روش تست کردن مدلها و مایگریشنها آشنا شوید.یک فایل ZIP حاوی همهی فایلهای پروژه، آپلود کنید. نام فایل ZIP اهمیتی ندارد.