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

问题描述 投票:0回答:1

有3个模型:Item,Offer和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中创建一个Offer时,我无法访问一个Item来选择它。我的模特看起来很好吗?如何在创建优惠时访问项目?

python django django-orm
1个回答
0
投票

一些想法使它工作:

  • 如果报价与一个项目相关,则item中应该有Offer外键(FK),而offers中没有M2M字段Item
  • 您必须决定是否对项目或要约进行评级,并且在Review中只留下一个FK,当OfferItem之间已经存在关系时,有两个是没有意义的。
  • 您需要某种方式来指定“中标”出价,例如作为selected_offer上的Item场。如果您选择将评价限制为商品而非商品,这也有助于将评价与出价和出价合并相关联。
© www.soinside.com 2019 - 2024. All rights reserved.