我有以下模型:
# app_a/models.py
class Poller(models.Model)。
poller_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
created_on = models.DateTimeField(auto_now_add=True)
# app_b/models.py
class PollerComment(models.Model)。
poller = models.ForeignKey(Poller, on_delete=models.CASCADE, related_name='PollerComment')
user = models.ForeignKey(Account, on_delete=models.CASCADE)
還有這個視圖來渲染模板:
def render_pollboard(request)。
# Query Pollers: 查詢投票器。
poller_queryset = Poller.objects.all()
#轉換為串列
qs_list = list(poller_queryset)
# Shuffle the list# Retrieve comment count per poller 每個投票者的評論數
comments_qs = PollerComment.objects.filter(poller_id=poller.poller_id)
[..]
在視圖中,我試圖在poller_queryset中獲得每個投票者的評論數。如何做到這一點?
題外話:我試圖將評論計數作為Poller模型的一個方法來實作,但由于我的設計,這導致了app_b/models.py模塊的回圈匯入錯誤
。uj5u.com熱心網友回復:
你可以使用poller實體來獲取其外鍵的數量
for poll in poller_queryset:
poll.PollerComment_set.count() //給你的評論數 for 該投票的評論數。
你也可以使用Count
from django.db.models import Count
Poller.objects.annotate(
ncomments=Count(PollerComment)
)
uj5u.com熱心網友回復:
你可以用.annotate(...) [Django-doc]這里:
from django.db.models import Count
Poller.objects.annotate(
ncomments=Count('PollerComment')
)
Poller從這個查詢集產生的物件將有一個額外的屬性.ncomments,其中包含相關的PollerComments的數量。
如果你因此使用這個作為poller_queryset,你可以在你的模板中使用這個作為:
{% for poller in qs_list %}。
{{ poller.poller_id }}: {{ poller.ncomments }}.
{% endfor %}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/323517.html
標籤:
