我可以看到,並非所有項目都顯示在我的管理員中。我可以在網址中使用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]
我前一段時間做了一些架構和數據遷移,也許我做錯了什麼?如果我做錯了,爲什麼我仍然可以訪問這些對象?
通常情況下,這樣的問題是局部的,但我曾經有過類似的情況。我遇到的問題是我手動操作實例的ID。通常,當你添加一個新的實例到你的數據庫時,db會給它一個默認的ID。但是,由於某種原因,我必須創建一些指定id的實例(id足夠大,以確保沒有碰撞和不會碰撞)。在這種情況下,django會給總數count(),並顯示默認分配ID的實例。也許不是你的情況,但不壞想想至少 – 2014-09-18 17:27:08
知道Django如何區分手動分配的ID是很了不起的...也許這是一個錯誤? – 2014-09-18 18:18:22
你的admin.py文件是什麼? – elmonkeylp 2014-09-18 18:32:55