می خواهیم یک سایت خرید اینترنتی محصولات مختلف بزنیم. در این سایت کاربران می توانند محصولات مختلف را مشاهده کرده و پس از انتخاب چند محصول فاکتور نهایی خرید خود را بینند.
بخشی از این پروژه نوشته شده است. از شما میخواهیم این پروژه را تکمیل کنید.
پروژه اولیه را از اینجا دانلود کنید. ساختار این پروژه به شرح زیر است:
در این سؤال تنها لازم است تغییراتی در app/views.py
و app/models.py
و app/forms.py
ایجاد کنید.
در فایل models.py
چهار مدل به شرح زیر وجود دارد:
۱. مدل Category
شامل فیلدهای زیر:
name
۲. مدل Product
شامل فیلدهای زیر:
name
category
description
price
stock
۳. مدل Order
شامل فیلدهای زیر:
email
address
۴. مدل OrderItem
شامل فیلدهای زیر:
order
product
quantity
مواردی که باید انجام دهید:
یک منیجر جدید به نام available
برای مدل Product
بنویسید به طوری که فقط کالاهایی را که در انبار موجودند برگرداند.
منیجر (objects) باید همانند سابق منیجر پیش فرض باقی بماند.
در این قسمت باید یک مدل فرم برای مدل Product
بنویسید. برای این کار، فایل apps/forms.py
دارای یک کلاس ProductForm
است که باید آن را پیادهسازی کنید. کالاهایی که به وسیلهی این فرم ساخته میشوند باید ویژگیهای زیر را دارا باشند:
ValidationError
با پیام Product is too expensive
پرتاب شود.ValidationError
با پیام Product must have a good description
پرتاب شود.order
🔗در این قسمت باید view محاسبه قیمت نهایی order
را (checkout
) طوری تغییر دهید که قیمت نهایی یک order
مشخص (int:pk
) را به صورت یک خروجی JSON به شکل زیر برگرداند.
این مقدار از نوع Decimal
می باشد و باید تا دو رقم اعشار مقدار آن حفظ شود.
نیازی به تغییر stock پس از checkout نمی باشد و تضمین می شود که در تست ها تعداد کالای سفارش داده شده برابر و یا کمتر از موجودی کالا باشد.
اگر فاکتوری با ID مورد نظر موجود نبود خطای 404
برگردانید.
شما تنها مجاز به تغییر در app/views.py
و app/models.py
و app/forms.py
هستید.
اگر تغییری در سایر فایلها ایجاد کنید، این تغییرات نادیده گرفته خواهد شد.
پس از اعمال تغییرات، کل پروژه را Zip کرده و ارسال کنید.
نام فایل Zip اهمیت ندارد.