django - 为不同的客户建立不同价格的多对多关系
问题描述
我有三个模型Product
,Buyer
和Offer
。任何买家都可以询问任何类型,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',)
解决方案
你可以这样做:
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
就像您的账单(发票)中的一行,因此您可以为不同的买家指定不同的价格。
推荐阅读
- laravel - Laravel Eloquent Relationship 2 不同的列
- spring-boot - 如何从输入 thymleaf 中获取价值并使用 th href spring boot 发布到控制器
- mongodb - 以字符串格式更新 mongo 日期
- python - 如何使用 PyBox2d 检测碰撞并使用该信息
- office-js - 如何使用office-js确定当前outlook编辑重复项是一个系列还是系列中的一个实例
- android - 为什么 Toast 在 android 中没有显示任何内容?它给出了 Renderscript 失败错误
- java - Android studio listview 更改项
- angular - 如何修复 Angular mat-expansion-panel 上的 ExpressionChangedAfterItHasBeenCheckedError
- python - 如何修复 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 5: invalid continuation byte
- node.js - NODEJS:在类外调用异步函数