首页 > 解决方案 > 为不同的客户建立不同价格的多对多关系

问题描述

我有三个模型ProductBuyerOffer。任何买家都可以询问任何类型,Product但对于每个客户,我可能会提供不同的价格。

产品的净价已经由供应商给出。

我写了下面的代码,突然意识到我只能为报价单选择产品,但不能每次使用此代码为每个产品和每个客户提供不同的价格。

如果有人能给我一些建议,那就太好了。谢谢。

class Product(models.Model):
    name = models.CharField(...)
    net_price = models.NumericField(...)

class Buyer(models.Model):
    name = models.CharField(...)

class Offer(models.Model):
    date = models.DateTimeField(auto_created=True, auto_now_add=True)
    buyer = models.ForeignKey(Buyer, default='',)
    products = models.ManyToManyField(Product, related_name='offer',)

标签: djangodjango-modelsmany-to-many

解决方案


你可以这样做:

class Product(models.Model):
    name = models.CharField(...)

class Buyer(models.Model):
    name = models.CharField(...)

class Offer(models.Model):
    date = models.DateTimeField(auto_created=True, auto_now_add=True)
    buyer = models.ForeignKey(Buyer)

class OfferUnit(models.Model):
    offer = models.ForeignKey(Offer)
    product = models.ForeignKey(Product)
    net_price = models.IntegerField()

OfferUnit就像您的账单(发票)中的一行,因此您可以为不同的买家指定不同的价格。


推荐阅读