2011-05-02 2 views
0

C'est une question très difficile à laquelle je ne suis pas capable de répondre.Django Comment ajouter un niveau dans un select multiple

J'ai trois classes, TestSubject peut avoir plus d'un sujet et un module peut avoir plus d'un sujet.

class Module(models.Model): 
    id = models.AutoField(primary_key=True) 
    user = models.ForeignKey(User) 

class Subject(models.Model): 
    id = models.AutoField(primary_key=True) 
    module = models.ForeignKey(Module) 

class TestSubject(models.Model): 
    id = models.AutoField(primary_key=True) 
    test = models.ForeignKey(Test) 
    subject = models.ManyToManyField(Subject) 

Sous la forme d'administration de TestSubject, je peux avoir plusieurs zone de texte de sélection pour sujet indiqué ci-dessous:

**module1 
    *subject1 
    *subject2 
**module2 
    *subject3 
    *subject4 

Quand useer sélectionnez module1, il sélectionne automatiquement tous les sujets dans le même module, pour Par exemple, lorsque je sélectionne le module 1, les sujets 1 et 2 sont sélectionnés.

Répondre

0

Vous pouvez override the choices pour votre domaine dans votre TestSubject ModelAdmin afin qu'il reflète la structure dont vous avez besoin. Bien que finalement tweaking the m2m-widget is enough.

Pour sélectionner plusieurs entrées à la fois, vous devriez regarder certains widgets ajax-enhanced.

Ajax Filtered Fields est une option qui pourrait être éventuellement modifiée pour faire ce que vous voulez.

Questions connexes