Как разработать модель django для различных товаров в приложении покупатель-продавец

Я новичок в django и пытаюсь сделать djangoApp, в котором покупатель и продавец могут сами выставлять список своих товаров из одной формы отправки. У меня есть много функций продуктов, которые должны быть в одной форме, но я хочу отдельные модели, а также я использовал Javascript, чтобы показать / скрыть определенные поля формы с выбором категории. Я застрял на разработке модели и их связи, поэтому, пожалуйста, помогите мне, как разработать модель и связать их друг с другом.

 class Category(models.Model):
      name = models.CharField(max_length=40,blank=True, null=True)
      created = models.DateTimeField(auto_now_add=True)
      id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True)
      def __str__(self):
        return self.name
    class Subcategory(models.Model):
      category = models.ForeignKey(Category, on_delete=models.CASCADE)
      name = models.CharField(max_length=40)
      created = models.DateTimeField(auto_now_add=True)
      id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True)
      def __str__(self):
        return self.name
    class Listingproducts(models.Model):
      #Needs to be shown in all Category selections
      owner = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
      category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True)
      subcategory = models.ForeignKey(Subcategory, on_delete=models.SET_NULL, null=True)
      title = models.CharField(max_length=200,null=True)
      price = models.IntegerField(null=True)
      isnegotiate = models.CharField(max_length=200, choices=negotiate, null=True)
      adsexpiry = models.CharField(max_length=200, choices=ads_expiry, null=True)
      deliverycharges = models.CharField(max_length=200,blank=True,null=True)  
      isdeliver = models.CharField(max_length=200, choices=isdeliver, null=True)
      deliveryarea = models.CharField(max_length=200, choices=delivery_area, null=True)
      conditions = models.CharField(max_length=200, choices=condition_type, null=True)
      userfor = models.CharField(max_length=200, blank=True, null=True)
      descriptions = models.TextField(max_length=200,null=True)
      featured_image = models.ImageField(null=True,  default='default.jpg')
      # --------- Vechicles Features list --------------------
      lotno = models.CharField(max_length=200,null=True) 
      enginecc = models.IntegerField(blank=True,null=True) 
      kilometersrun = models.IntegerField(blank=True,null=True)
      makeyear = models.DateField(null=True,blank=True)
      launchDistrict = models.CharField(max_length=200, choices=launch_district, null=True)
      # -------- Computers Features list ---------------
      processors = models.CharField(max_length=200,choices= processors_type, null=True)
      processorsgen = models.CharField(max_length=200,choices=processorsgen_type)
      memory = models.CharField(max_length=200,null=True)
      storagetype = models.CharField(max_length=200,choices= storage_type, null=True)
      storagegbtb = models.CharField(max_length=200,null=True)
      created = models.DateTimeField(auto_now_add=True)
      id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True)
      def __str__(self):
        return self.title
Вернуться на верх