[英]Using annotate() on top of django filters
是否可以在 Django 過濾器上使用注釋? 我不是指 django 文檔中的 filter() 而是 django-filters。
這樣的事情給了我一個屬性錯誤,說過濾器沒有屬性注釋。
如果您需要其他代碼,請告訴我
視圖.py
post = postFilter(request.GET, queryset=BlogPost.objects.exclude((Q(author_id__in=request.user.blocked_users.all()) | Q(author = request.user))).order_by('date_updated')).annotate(user_has_interest=Case(When(interest__user=request.user, then=Value(True)), default=False, output_field=BooleanField()))
django-filter
實例postFilter
沒有任何名為 annotate 的屬性,但查詢集確實有它。 您可以像這樣添加查詢集參數:
post = postFilter(
request.GET,
queryset=BlogPost.objects.exclude(
Q(author_id__in=request.user.blocked_users.all() |
Q(author = request.user)
).order_by('date_updated').annotate(
user_has_interest=Case(
When(interest__user=request.user, then=Value(True)),
default=False, output_field=BooleanField()
)
)
)
)
或者您可以稍后將其添加到過濾器的qs
屬性中。 例如:
post = postFilter(request.GET, queryset=BlogPost.objects.exclude((Q(author_id__in=request.user.blocked_users.all()) | Q(author = request.user))).order_by('date_updated'))
post_qs = post.qs.annotate(user_has_interest=Case(When(interest__user=request.user, then=Value(True)), default=False, output_field=BooleanField()))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.