Django中是否有任何函数可以计算反馈模型中的特定选择字段?

2024-05-15 16:37:33 发布

您现在位置:Python中文网/ 问答频道 /正文

        class Feedback(models.Model):
        customer_name = models.CharField(max_length=120)
        email = models.EmailField()
        Place = models.CharField(max_length=120)
        Area_Type = models.ForeignKey(Product, on_delete=models.CASCADE)
        Electricity = models.CharField(max_length=3, choices=[('1','Excellent'),('2','Good'),('3','Bad')])
        Water_Supply = models.CharField(max_length=3, choices=[('1', 'Excellent'), ('2', 'Good'), ('3', 'Bad')])
        details = models.TextField()
        Satisfactory_locality = models.BooleanField()
        date = models.DateField(auto_now_add=True)
  1. 我已经在Django创建了上述模型
  2. 从这一点上,我想数一数对于电场来说非常好的反馈选择
  3. 还请说明如何查看此计数
  4. 询问是否需要更多信息
  5. 当使用Feedback.objects时,它显示未解析属性,如下所示
class ClubChartView(TemplateView):
  template_name = 'clubs/chart.html'
  def get_context_data(self, **kwargs):
      context = super().get_context_data()
      context["qs"] = Feedback.objects.all()
      return context

Tags: namedatagetobjectsmodelscontextlengthmax
2条回答

这个问题已经回答了here

示例:

>>> Model.objects.count()
42
>>> Model.related_set.count()
102
>>> Model.related_set.filter(blah=42).count()
3

在django模型中,可以向模型添加属性方法,在该模型中可以从任何位置引用。您可以通过放置@property装饰器和一个函数来实现这一点

class Feedback(models.Model):
    customer_name = models.CharField(max_length=120)
    email = models.EmailField()
    Place = models.CharField(max_length=120)
    Area_Type = models.ForeignKey(Product, on_delete=models.CASCADE)
    Electricity = models.CharField(max_length=3, choices=[('1','Excellent'),('2','Good'),('3','Bad')])
    Water_Supply = models.CharField(max_length=3, choices=[('1', 'Excellent'), ('2', 'Good'), ('3', 'Bad')])
    details = models.TextField()
    Satisfactory_locality = models.BooleanField()
    date = models.DateField(auto_now_add=True)

    @property
    def get_feedback_count(self):
        return Feedback.objects.all().filter(Electricity='1').count()

要将其传递给视图,可以将其添加到views.py中的上下文中,作为count = Feedback.get_feedback_count()

有一种方法可以使用with从模板中获取它,但我现在忘记了

相关问题 更多 >