gpt4 book ai didi

python - django.admin.SimpleListFilter.queryset - 返回列表?

转载 作者:行者123 更新时间:2023-12-02 09:30:11 40 4
gpt4 key购买 nike

我想通过模型中的函数过滤查询集。

class CommentAdmin(admin.ModelAdmin):

class PostedByGuestFilter(admin.SimpleListFilter):

title = 'Posted by Guest'
parameter_name = 'posted_by_guest'

def lookups(self, request, model_admin):
return (
(True, 'Yes'),
(False, 'No'),
)

def queryset(self, request, queryset):
if self.value():
return [comment for comment in queryset if comment.posted_by_guest()]
elif not self.value():
return [comment for comment in queryset if not comment.posted_by_guest()]

不幸的是,这种实现会导致 django.admin 告诉我我的数据库已损坏。我该如何解决这个问题?

enter image description here

最佳答案

这不是最佳的(将导致额外的 SQL 查询),如果可能的话,我会寻找将 comment.posted_by_guest() 逻辑移动到 SQL 中的方法(显示该语句的正文)方法(如果您需要帮助),但这应该有效:

def queryset(self, request, queryset):
expected_value = self.value()
excludes = []
for comment in queryset:
if comment.posted_by_guest() != expected_value:
excludes.append(comment.id)
return queryset.exclude(pk__in=excludes)

Django 管理过滤器 API 需要一些改进!

关于python - django.admin.SimpleListFilter.queryset - 返回列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12646730/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com