Как разработать модель 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