2012-07-24 125 views
1

我正在編寫有幾個小應用程序的django項目。我想使用默認管理網站,所以我的admin.py將會非常簡單。不幸的是,如果我把它放到項目目錄中,它就不起作用 - 它必須位於app目錄中。現在我有兩個選擇:Django管理站點 - admin.py的位置

  • 把一個admin.py中的應用程序目錄中的一個 - 它會工作,但它在邏輯上不正確

  • 在每個應用程序目錄

    把幾個admin.py文件(只包含從某些應用程序模型)

是否有某種方式來強制Django的尋找這個文件在項目的根目錄?

+1

爲什麼你會不會想這樣做的正確方法,即你的第二個選項?有什麼好處? – 2012-07-24 09:33:15

+0

我想保持我的項目樹儘可能乾淨。而且這也意味着幾次編寫相同的「代碼」......至少導入「管理員」。 – middleofdreams 2012-07-24 10:15:48

+1

正常程序是在每個應用程序目錄中都有一個admin.py。如果你認爲這會讓你的項目樹混亂起來......呃,......這樣想吧 - 關鍵是每個應用程序都是一個獨立的單元,可能會被不同的項目使用。因此,每個'admin.py'都需要分開。並認真......從django.contrib導入管理員 - 這實際上不是代碼重複。 – scytale 2012-07-24 11:49:08

回答

1

您可以將該文件放入您的「默認」應用程序(創建項目時創建的應用程序)。然後,您可以從其他應用程序導入模型,並在單個admin.py文件中使用它們。例如,下面的文件可以在默認應用程序和「課程」,「論壇」應用程序中使用。

admin.py

from django.contrib import admin 

from models import UserProfile, Sponsor 
from courses.models import Course 
from forum.models import ForumTopic 
admin.site.register(UserProfile) 
admin.site.register(Sponsor) 
class CourseAdmin(admin.ModelAdmin): 
    prepopulated_fields = {"slug": ("code", "name",)} 

admin.site.register(Course, CourseAdmin) 


class ForumTopicAdmin(admin.ModelAdmin): 
    prepopulated_fields = {"slug": ("title",)} 

admin.site.register(ForumTopic, ForumTopicAdmin)