有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来选择它。我的模特看起来很好吗?如何在创建优惠时访问项目?
一些想法使它工作:
item
中应该有Offer
外键(FK),而offers
中没有M2M字段Item
。Review
中只留下一个FK,当Offer
和Item
之间已经存在关系时,有两个是没有意义的。selected_offer
上的Item
场。如果您选择将评价限制为商品而非商品,这也有助于将评价与出价和出价合并相关联。