我正在構建一個BlogApp,我試圖在一個特定的tag被使用10次時創建一個通知
所以我在for回圈中使用了if陳述句,所以如果任何標簽使用了10次就創建通知,但是當我試圖計數時,它顯示
'Tag'物件沒有'count'屬性
。
models.py
class Post(models.Model)。
post_user = models.ForeignKey(User, on_delete=models.CASCADE)
psot_title = models.CharField(max_length=30)
class Comment(models.Model)。
user = models.ForeignKey(User, on_delete=models.CASCADE)
post_of = models.ForeignKey(Post, on_delete=models.CASCADE)
views.py
def page(request)。
subquery = Tag.objects.filter(post__post_user=request.user).annotate(
num_name=Count('name')
for que in subquery:
if que.count() > 10:
Notification.objects.create(user=request.user)
context = {'subquery':subquery}.
return render(request, 'page.html', context}。
我嘗試了什么 :-
我也試過len,比如:-
for que in subquery:
if len(que) > 10:
Notification.objects.create(user=request.user)
但它顯示了
型別為'Tag'的物件沒有len()
。
我試了很多次,去掉了count()和len(),但它顯示
'int'物件沒有屬性'name'
。
如果我在查詢中使用count(),那么它將計算所有的標簽,但我正試圖檢查每個標簽。
如果有任何幫助,我將非常感激。謝謝你
uj5u.com熱心網友回復:
你在你的查詢中使用注釋,將計數資訊添加到Tag物件中,例如:
.annotate(num_name=Count('name'/span>)
這就計算了name的計數,并用該值注釋標簽物件。要訪問一個給定標簽的這個計數,你需要使用:
tag.num_name
因此,在你的代碼中:
for que in subquery:
if que.num_name > 10:
Notification.objects.create(user=request.user)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/332355.html
標籤:
下一篇:讓管道在angular中自我重繪
