سلام دوستان
دارم یه سایت فروشگاهیای رو پیاده سازی میکنم که میتونه شامل انواع مختلف محصول باشه (تقریبا مثل دیجی کالا). مثلا میتونه موبایل، کتاب، لپ تاپ، میز و... داشته باشه.
میخواستم برای همشون فقط یه مدل Product بسازم و همه محصولات از روی این ساخته بشن. ولی دیدم اگه این کار رو بکنم فیلدهایی که بعنوان feature هر محصول ساختم خیلی زیاد میشن و خیلی موقع ساخت یه محصول جدید بی استفاده میشن. چون مثلا اگه من بخوام یه کتاب بسازم باید مثلا فیلدی که مربوط به تعداد صفحاتشه رو پر کنم ولی مثلا فیلدهایی که مربوط به لپ تاپ و موبایل و... هستن، کلا بی استفاده میشن.
به همین دلیل یه مدل Product ساختم که فیلدهای کلی مثل اسم محصول، عکس های محصول، دسته بندی، توضیحات محصول و... رو براش تعریف کردم و برای هر محصول (موبایل، کتاب، لپ تاپ و...) یه مدل جدا ساختم که این مدل از مدل Product ارث بری میکنه. به این صورت:
class Product(models.Model):
name = models.CharField(max_length=120)
price = models.IntegerField()
description = models.TextField()
#...
class Meta:
abstract = True
class MobileProduct(Product):
# Fields that are specific to this product
class BookProduct(Product):
# Fields that are specific to this product
class NotBookProduct(Product):
# Fields that are specific to this product
حالا میخواستم بدونم آیا این روش و راه حلی که من پیاده سازی کردم روش درستیه یا شما راه حل بهتری رو سراغ دارید؟
خیلی ممنون میشم راهنماییم کنید ❤️
سلام
دوستمون بالا که اشاره کردن به forein key
به جای اون بهتره که از ManytoManyField استفاده بشه و مشکل حل میشه
class Category(models.Model):
parent = models.ForeignKey('self', default=None, null=True, blank=True, on_delete=models.SET_NULL,
related_name="children", verbose_name="زیردسته")
title = models.CharField(max_length=200, verbose_name="عنوان دسته بندی")
slug = models.SlugField(max_length=100, unique=True, verbose_name="آدرس دسته بندی")
status = models.BooleanField(default=True, verbose_name="آیا نمایش داده شود؟")
position = models.IntegerField(verbose_name="پوزیشن")
class product(models.Model):
category = models.ManaytoManyField(Category)
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟