2009-12-22 7 views
8

Je ces modèles:site d'administration Django inverse en ligne ForeignKey

(pseudocode)

Course: 
    ForeignKey(Outline, null=True, blank=True) 
    ForeignKey(OutlineFile, null=True, blank=True) 

Outline:  
    //data 

OutlineFile:  
    //different data 

La situation est que tout cours peut avoir un aperçu associé, et/ou un OutlineFile, ou ni . Un Outline peut être associé à plusieurs cours, de même qu'un OutlineFile peut être associé à plusieurs cours. Cependant, un cours n'en aura jamais qu'un au maximum. Ce que je veux, c'est que la page d'administration du changement de cours affiche tous les champs du cours, et un menu déroulant pour chacun des fichiers Outline et OutlineFile. Si l'un d'eux est sélectionné, je veux que les champs de ce plan soient affichés et modifiables, tout comme un champ en ligne.

Est-ce que je devrais restructurer mes modèles d'une manière ou d'une autre, ou sont-ils structurés adéquatement déjà? Y at-il de toute façon à faire ce que je veux dans les limites du système actuel en ligne?

Enfin, si ce n'est pas possible, où puis-je commencer à le faire de façon personnalisée?

+2

en double exemplaire de: http://stackoverflow.com/questions/6419248/inline-like-solution-for-django-admin-where-admin-contains-foreignkey-to-other-m – Anentropic

Répondre

1

Vous le faites dans l'autre sens:

class Course(models.Model): 
    # Foreign key is defined only in related fields 

class Outline(models.Model):  
    course = models.ForeignKey(Course, 
    related_name='outlines', # Or whatever you choose 
    null=True, # These two mean your FK relation is basically optional 
    blank=True 
    ) 

class OutlineFile(models.Model):  
    # Same structure as above 

Lorsque vous créez les formulaires de std, cette structure de modèle va créer un menu déroulant comme vous spécifiez par défaut.

Questions connexes