در این سوال میخواهیم مدل های اصلی یک بلاگ را پیاده سازی کنیم. برای این کار شما باید یک پروژه بسازید و یک App به نام blog
در آن ایجاد کنید. برای راحتی شما ما این پروژه خام را ساخته ایم و شما میتوانید آن را به عنوان قالب از اینجا دانلود کنید و کد خود را در آن بنویسید.
در این سوال شما فقط با فایل models.py
که در پوشه blog قرار دارد، کار خواهید کرد.
شما باید ۳ مدل(model) به این فایل اضافه کنید:
۱. مدل نویسنده: Author
name
است که از جنس رشته با حداکثر طول ۵۰ کارکتر است.۲. مدل پستِ بلاگ: BlogPost
title
: از جنس رشته با حداکثر طول ۲۵۰ کارکتر است.body
: از جنس رشته با طول نا محدود است.author
: که یک کلید خارجی به یک نویسنده است که نویسنده پست را مشخص میکند.date_created
: از نوع DateTimeField است که زمان دقیق ساخته شدن پست را نشان میدهد و توسط کاربر وارد نمیشود.۳. مدل نظر: Comment
blog_post
: این فیلد یک کلید خارجی به پستی است که این کامنت متعلق به آن است.text
: متن کامنت است که از نوع رشته با حدکثر طول ۵۰۰ کارکتر میباشد.توجه: این مدل ها باید به گونه ای نوشته شوند که اگر پست ای پاک شد همهی کامنت های مربوط به آن پست نیز پاک شود. همچنین اگر نویسنده ای پاک شد، همه پست های آن نویسنده به همراه کامنت هایش پاک شود.
تابع کپی:
بعد از ساختن مدل های بالا یک تابع به نام ()copy
به مدل BlogPost اضافه کنید. این تابع آرگومان ورودی ندارد و یک کپی از مدل موردنظر میگیرد. به این صورت که کل پست به همراه همه کامنت هایش را کاملا کپی میکند. تاریخ پست کپی شده جدید، به تاریخ فعلی تغییر میکند. این تابع در نهایت id بلاگ پست جدید را باز میگرداند.
برای مثال اگر تنها یک نویسنده به نام محمد و یک پست با تاریخ ۱۸ مهر به همراه ۳ کامنت در پایگاه داده وجود داشته باشد، بعد از کپی شدن پست در تاریخ ۲۰ مهر، هنوز یک نویسنده در پایگاه داده هست ولی تعداد پست ها ۲ و تعداد کامنت ها ۶ خواهد بود (هر پست ۳ کامنت مجزا) که تاریخ پست جدید ۲۰ مهر است.
فایل آپلودی
یک فایل zip. که درون آن یک پوشه blog
وجود دارد و در این پوشه فقط یک فایل models.py
قرار دارد. توجه کنید در صورتی که فایلهای اضافی ارسال کنید، حذف خواهند شد.