django - 在 Django Admin 中显示我的模型数据的子集
问题描述
我的数据库模型就像
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 方面找到这样做的方法。或者我必须为此创建一个自定义管理员?
解决方案
您可以创建一个代理模型,然后稍微更新查询集以满足您的要求。
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)
推荐阅读
- azure - 资源(Azure 逻辑应用)上的 Azure 警报仅被触发一次
- javascript - 有没有办法为不在 60hz 上的高/低帧速率监视器设置 rAF 的 FPS?
- react-native - 如何防止导航堆栈在状态更新时重新渲染整个树?
- docker - 如何顺利更新管道工服务器?
- javascript - React:将嵌套的 json 数据与父数据合并以创建多个对象
- r - 在ggplot2中取消对具有相同y值的数据点进行分组
- c++ - 如何理解像 (chosen += ch) 这样的传递参数?
- amazon-web-services - IAM 策略限制 s3 存储桶中的访问文件夹,其中包含 tenant_id
- django - django 中的自定义用户模型以使用电话和电子邮件进行注册
- python - python中的日期/时间