2016-09-14 29 views
0

我能夠與管理應用程序編程方式註冊的所有型號爲這樣各個領域的應用:現在註冊所有型號與管理程序包括list_display

app = apps.get_app_config('school') 

for model_name, model in app.models.items(): 
    admin.site.register(model) 

,我願做進一步的配置以列表顯示(網格)顯示模型幷包括所有可用的字段。例如:

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('username', 'first_name', 'last_name', 'email', 'is_superuser', 'is_staff', 'is_active', 'school_id', 'position_id', 'school_contact', 'phone', 'extension',) 

admin.site.register(Person, PersonAdmin) 

而我想爲我的應用程序中的每個模型都做到這一點。我怎樣才能做到這一點?

回答

0

這就是:

app = apps.get_app_config('school') 

for model_name, model in app.models.items(): 
    model_admin = type(model_name + "Admin", (admin.ModelAdmin,), {'list_display': tuple([field.name for field in model._meta.fields])}) 
    admin.site.register(model, model_admin) 
0

道歉,因爲我沒有檢查過。但我認爲get_all_field_names()方法應該能夠得到這個。我想你可以用這種方式使用它:[field.name for field in MyModel._meta.get_fields()]。但這是從django 1.8中棄用的。可能現在工作,但將來會停止。

由於信譽不足,很抱歉無法對您的問題發表評論。