gpt4 book ai didi

django - 在 Django Admin 中显示我的模型数据的子集

转载 作者:行者123 更新时间:2023-12-02 19:51:48 24 4
gpt4 key购买 nike

我的数据库模型就像

class Restaurant(models.Model):
email_sent = models.BooleanField(null=True, default=False)
rest_owner = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='rest_owner')
is_approved = models.BooleanField(null=False, default=False)

我想创建一个单独的表,在其中可以仅显示 is_approved=0 字段的数据。在 django 站点中很简单。但我无法找到在 djangoAdmin 端执行此操作的方法。或者我必须为此创建一个自定义管理员?

最佳答案

您可以创建一个 proxy model然后稍微更新查询集以满足您的要求。

class UnapprovedRestaurant(Restaurant):
class Meta:
proxy=True

class UbapprovedRestaurantAdmin(admin.ModelAdmin):
def get_queryset(self, *args, **kwargs):
return Restaurant.objects.filter(is_approved=False)

admin.site.register(UnapprovedRestaurant, UbapprovedRestaurantAdmin)

如果您不想将管理页面分为这两种状态。然后我建议您为管理页面创建一个自定义过滤器,以便您可以根据定义的条件过滤数据,如下所示:

class RestaurantFilter(admin.SimpleListFilter):

def lookups(self, request, model_admin):
return (
'approved': 'Approved',
'unapproved': 'Unapproved'
)

def queryset(self, request, queryset):
value = self.value()
if value is None:
return queryset
elif value == 'approved':
return queryset.filter(is_approved=True)
elif value == 'unapproved':
return queryset.filter(is_approved=False)

class RestaurantAdmin(admin.ModelAdmin):
list_filter = (RestaurantFilter, )

admin.site.register(Restaurant, RestaurantAdmin)

关于django - 在 Django Admin 中显示我的模型数据的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58007313/

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