簡體   English   中英

是否有任何函數可以從 django 的反饋模型中計算特定的選擇字段?

[英]Is there any function to count a particular choice field from feedback model in django?

        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

在 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從模板中獲取它with但我現在忘記了。

這個問題已經在這里回答

例子:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM