Python 将具有外键关系的两个模型数据传递给一个html模板
我有两个模型。第一个是汽车,第二个是评级。我有列表视图,我在这里显示所有汽车,我想显示汽车的平均评级和评级计数也 我尝试在我的汽车模型中添加新字段(平均评分和评分计数),并在提交新评分时更新这些字段。但这并不是我认为的好方法 车型Python 将具有外键关系的两个模型数据传递给一个html模板,python,django,Python,Django,我有两个模型。第一个是汽车,第二个是评级。我有列表视图,我在这里显示所有汽车,我想显示汽车的平均评级和评级计数也 我尝试在我的汽车模型中添加新字段(平均评分和评分计数),并在提交新评分时更新这些字段。但这并不是我认为的好方法 车型 class Cars(models.Model): name = models.CharField(max_length=255) def __str__(self): return self.name class RatingMo
class Cars(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class RatingModel(models.Model):
reviewed_item = models.ForeignKey(
Cars,
on_delete=models.CASCADE
)
excellent = models.FloatField(
max_length=20,
default=0
)...
bad = models.FloatField(
max_length=20,
default=0
)
评级模型
class Cars(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class RatingModel(models.Model):
reviewed_item = models.ForeignKey(
Cars,
on_delete=models.CASCADE
)
excellent = models.FloatField(
max_length=20,
default=0
)...
bad = models.FloatField(
max_length=20,
default=0
)
汽车视图
class CarsView(BaseContext, TemplateView):
template_name = "pages/all_cars.html"
def get_context_data(self, **kwargs):
context = super(CarsView, self).get_context_data(**kwargs)
context["cars"] = Cars.objects.all().order_by("-id")
return context
正确的方法是使用
这意味着您的
评分
字段是整数,而不是优/差字段。您可能希望为评分
模型分配分数,如:
from django.contrib.auth import get_user_model
class Rating(models.Model):
car = models.ForeignKey(Car, on_delete=models.CASCADE)
score = models.IntegerField()
reviewer = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
由此查询集生成的Car
对象将具有两个额外属性.avg\u rating
和.rating\u count
,它们将包含平均分数和相关rating
对象的数量
注意:Django车型的名称通常是单数,没有车型
后缀,因此汽车
而不是汽车
,以及评级
而不是评级模型
这里的
优秀
和不好
是什么?每次用户提交新评分时,我都会增加这些字段。但是,您如何跟踪哪些用户提交了哪些评论?