我可以看到,并非所有的项目出现在我的管理。我可以使用url中的id打开它们,但是它们没有列出,所以我不能搜索和过滤它们。有什么不对的?
列表页脚和页眉中也有1735 results和2519 total。
下面是我的admin.py的样子:
class DetalAdminForm(ModelForm):
class Meta:
model = Detal
def __init__(self, *args, **kwargs):
if not kwargs.get('instance', None):
if not kwargs.get('initial', None):
kwargs['initial'] = {}
if not kwargs['initial'].get('number', None):
kwargs['initial']['number'] = get_first_unused_detal_number()
super(DetalAdminForm, self).__init__(*args, **kwargs)
class CellListFilter(admin.SimpleListFilter):
title = 'Ячейка (включая доп. места)'
parameter_name = 'cell_number'
def lookups(self, request, model_admin):
cells_list = StoringCell.objects.all().values_list('id', 'number')
return cells_list
def queryset(self, request, queryset):
cell_number = self.value()
return queryset.filter(Q(cell__id=cell_number) | Q(dopolnenie__cell__id=cell_number)).distinct()
class DetalAdmin(admin.ModelAdmin):
form = DetalAdminForm
fieldsets = (
(None, {'fields' : ['number']}),
('...', {'fields' : ['name', 'tipe', 'korpus', 'primechanie', ('cell', 'kol_nalicie', 'upakovka')]}),
)
search_fields = ['name']
list_display = ('number', 'tipe', 'name', 'korpus', 'cell', 'kol_nalicie', 'get_adds_amount')
list_display_links = ['number', 'tipe', 'name', 'korpus', 'cell', 'kol_nalicie']
list_filter = ['da_net', 'tipe', 'korpus', 'cell', CellListFilter]
list_select_related = True
ordering = ['number']
inlines = [DopolnenieInline, OpisanieInline, KodPostavInline]不久前我做了一些模式和数据迁移,也许我做错了什么?如果我做错了什么为什么我仍然可以访问对象?
发布于 2014-09-19 15:38:27
问题在于自定义过滤器CellListFilter。我应该检查一下parameter_name是否在request.GET中
def queryset(self, request, queryset):
if self.parameter_name in request.GET:
cell_number = self.value()
return queryset.filter(Q(cell__id=cell_number) | Q(dopolnenie__cell__id=cell_number)).distinct()
return querysethttps://stackoverflow.com/questions/25918338
复制相似问题