在我的案例中如何设置多对多附加字段

时间:2019-04-06 11:16:23

标签: python django django-orm

共有3种模型:项目,报价和RatingAndReviews。客户为承包商创建任务,将其存储在项目中,承包商在要约中为任务报价。项目可以有多个优惠。任务完成后,客户对承包商进行评分和审查。建立模型的最佳方法是什么

class Item(models.Model):
    owner = models.ForeignKey(
        CustomUser,
        on_delete=models.CASCADE,
    )
    offers = models.ManyToManyField(
        'Offer',
        through='RatingAndReview'
    )

class Offer(models.Model):
    owner = models.ForeignKey(
        CustomUser,
        on_delete=models.CASCADE,
    )

class RatingAndReview(models.Model):
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    offer = models.ForeignKey(Offer, on_delete=models.CASCADE)
    rating = models.PositiveIntegerField()
    review = models.TextField()

我曾经有一个一对多的关系项目-要约,可以选择要约的所有者和我为其制作的项目,但是必须添加RatingAndReview。现在,当我在django-admin中创建要约时,我无法访问要为其选择的项。 我的模型看起来不错吗?创建商品时如何访问商品?

1 个答案:

答案 0 :(得分:0)

一些使其起作用的想法:

  • 如果要约与一个项目相关,则item中应该有Offer外键(FK),{中应该没有M2M字段offers {1}}。
  • 您必须确定评级是针对商品还是报价,并且在Item中仅保留一个FK,而在Review和{ {1}}。
  • 您需要某种方式指定“中标”出价,例如作为Offer上的Item字段。如果您选择将评论限制为项目而不是报价,这也有助于将评论链接到出价和投标人。