2014-09-18 51 views
0

我可以看到,並非所有項目都顯示在我的管理員中。我可以在網址中使用id打開它們,但它們未列出,因此我無法搜索並過濾它們。什麼可能是錯的?並非管理中列出的所有項目

列表頁腳和標題中還有1735 results2519 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] 

我前一段時間做了一些架構和數據遷移,也許我做錯了什麼?如果我做錯了,爲什麼我仍然可以訪問這些對象?

+0

通常情況下,這樣的問題是局部的,但我曾經有過類似的情況。我遇到的問題是我手動操作實例的ID。通常,當你添加一個新的實例到你的數據庫時,db會給它一個默認的ID。但是,由於某種原因,我必須創建一些指定id的實例(id足夠大,以確保沒有碰撞和不會碰撞)。在這種情況下,django會給總數count(),並顯示默認分配ID的實例。也許不是你的情況,但不壞想想至少 – 2014-09-18 17:27:08

+0

知道Django如何區分手動分配的ID是很了不起的...也許這是一個錯誤? – 2014-09-18 18:18:22

+0

你的admin.py文件是什麼? – elmonkeylp 2014-09-18 18:32:55

回答

0

的問題是與自定義過濾器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 queryset 
0

嘗試設置list_max_show_alllist_per_page在admin.py

class ArticleAdmin(admin.ModelAdmin): 
    list_max_show_all = 3000 
    list_per_page = 500 
+0

不幸的是,它沒有幫助。 – 2014-09-18 18:40:42

相關問題