我想在AvariaAdmin
上创建一个自定义list_filter,以检查env_emp
是否为空,我不知道该怎么做
我的模型
class Avaria(models.Model):
.......
class Pavimentacao(models.Model):
avaria = models.ForeignKey(Avaria, related_name='AvariaObjects',on_delete=models.CASCADE)
env_emp= models.DateField(blank=True,null=True)
.....
答案 0 :(得分:1)
在您的admin.py
文件中,使用以下内容注册Avaria模型:
class EmptyDateFilter(admin.SimpleListFilter):
title = _('empty date')
parameter_name = 'env_emp'
def lookups(self, request, model_admin):
return (
('all', 'All'),
('has_no_date', 'Has no date')
)
def queryset(self, request, queryset):
value = self.value()
if value == 'all':
return queryset
isnull = (value == "has_no_date")
return queryset.filter(AvariaObjects__env_emp__isnull=isnull)
@admin.register(Avaria)
class AvariaAdmin(admin.ModelAdmin):
list_filter = (EmptyDateFilter, )
上找到更多信息。
答案 1 :(得分:0)
您可以使用isnull
字段查找来检查可为空字段是否为空:
Pavimentacao.objects.filter(env_emp__isnull=True)