2012-07-24 2 views
1

J'écris le projet django qui a plusieurs petites applications. Je veux utiliser le site d'administration par défaut, donc mon admin.py sera très simple. Malheureusement, cela ne fonctionne pas si je le mets dans le répertoire du projet - il doit être dans le répertoire de l'application. Maintenant, j'ai deux options:Django admin sites - emplacement de admin.py

  • mettre un admin.py dans l'un des répertoire de l'application - cela fonctionnera mais il est logiquement pas correct

  • Mettez plusieurs fichiers admin.py dans chaque répertoire d'applications (contenant uniquement modèles de certaines applications)

Existe-t-il un moyen de forcer django à rechercher ce fichier dans le répertoire racine du projet?

+1

Pourquoi voudriez-vous pas faire de la bonne façon, à savoir votre deuxième option? Quel serait le bénéfice? –

+0

Je veux garder mon arbre de projet aussi propre que possible. Et aussi cela signifie aussi écrire le même 'code' plusieurs fois ... au moins en important 'admin'. – middleofdreams

+1

la procédure normale est d'avoir un admin.py dans chaque répertoire de l'application. Si vous pensez que cela encombre votre arbre de projet ... eh bien, euh .... Pensez-y comme ça - le fait est que chaque application est une unité autonome qui pourrait potentiellement être utilisée par un projet différent. Par conséquent, chaque 'admin.py' doit être séparé. Et sérieusement ... 'from admin d'importation django.contrib' - ce n'est vraiment pas la duplication de code. – scytale

Répondre

1

Vous pouvez placer le fichier dans votre application "par défaut" (celle qui a été créée lorsque vous avez créé votre projet). Vous pouvez ensuite importer des modèles d'autres applications et les utiliser dans ce fichier admin.py unique. Par exemple, le fichier ci-dessous fonctionne avec une application par défaut et des applications "Cours" et "Forum".

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)