Моделирование баз данных в Django

У меня есть сценарий, для которого я пытаюсь создать модели базы данных, но я не могу найти идеальный способ сделать это Сценарий выглядит следующим образом .

  • Допустим, есть компания, которая предоставляет предложение на своем сайте (собственный сайт компании) и другое предложение на другом сайте (например, Amazon)
  • .
  • Я хочу хранить данные о компании, для чего я сделал кое-что, как показано ниже.
  • Далее я создал Прямые предложения
  • .
  • Последним я создал предложение продавцов
  • Все модели выглядят следующим образом

    class Company(models.Model):
        name= models.CharField(max_length=50, null=True)
        address= models.CharField(max_length=250, null=True)
    
    class DirectOffers(models.Model):
        Smartphone= models.FloatField(max_length=50, null=True)
     
    class VendorsOffers(models.Model):
        Smartphone= models.FloatField(max_length=50, null=True)
        category = models.CharField(max_length=250, null=True)
        owner=models.ForeigKeyField("Company",on_delete=models.CASCADE)

Но вышеизложенное не кажется правильным, поэтому любая помощь или руководство будут очень полезны.

class Company(models.Model):
    name= models.CharField(max_length=50, null=True)
    address= models.CharField(max_length=250, null=True)

class Offer(models.Model):
    owner=models.ForeigKeyField("Company",on_delete=models.CASCADE)
    Smartphone= models.FloatField(max_length=50, null=True)
    category = models.CharField(max_length=250, null=True)
    vendor_only = models.BooleanField(default=False)
    # company flag denotes that the offer is only applicable on the company site.
    company_only = models.BooleanField(default=False)
    # this will create another table `vendor_offers` to store the details of the vendors for which a certain offer is applicable  
    vendors = models.ManytoManyField("Vendors")

Это также упрощает работу с запросами

#getting offers only for a specific vendor    
Offer.objects.filter(vendors__vendor=21)
#getting offers only for vendors    
Offer.objects.filter(vendor_only=True)
#getting offers which are available both places     
Offer.objects.filter(vendor_only=True,company_only=True)
Вернуться на верх