2016-05-16 12 views
2
class Library(forms.ModelForm): 

    author = forms.ChoiceField(
     widget = forms.Select(), 
     choices = ([ 
      ('Jk Rowling','Jk Rowling'), 
      ('agatha christie','agatha christie'), 
      ('mark twain','mark twain'), 
     ]), 
     initial = '1', 
     required = True, 
    ) 
    books = forms.ChoiceField(
     widget = forms.Select(), 
     choices = ([ 
      ('Harry Potter 1','Harry Potter 1'), # 1 
      ('Harry Potter 2','Harry Potter 2'), # 2 
      ('Harry Potter 3','Harry Potter 3'), # 3 
      ('Harry Potter 4','Harry Potter 4'), # 4 
      ('The A.B.C. Murders','The A.B.C. Murders'), # 5 
      ('Dumb Witness','Dumb Witness'), # 6 
      ('Death on the Nile','Death on the Nile'), # 7 
      ('Murder Is Easy','Murder Is Easy'), # 8 
      ('Roughing It','Roughing It'), # 9 
      (' The Gilded Age ',' The Gilded Age '), # 10 
      ('Adventures of Tom Sawyer','Adventures of Tom Sawyer'), # 11 
     ]), 
     initial = '1', 
     required = True, 
    ) 

Wenn Benutzer Wählen Sie den Autor als Jk Rowling der Potter-Reihe Harry muss in den Büchern Auswahlfeld ausgefüllt werden (1 bis 4 Auswahl)Wie man Django verkettet wählt in Forms.py?

Wenn die Nutzer den Autor als Agatha Christie Wählen Sie dann nur die (5 bis 8) muss im Bereich Bücher Wahl

Wenn Benutzer wählen Sie den Autor Wie Mark Twain die Wahl in der select-Widget der Bücher Auswahlfeld

ich möchte ausgefüllt werden müssen (8 bis 11) nur dann ausgefüllt werden filtern die Auswahl kann jemand helfen?

+1

Mögliche Duplikate von [Wie Interdependent Dropdown-Menüs in Django mit Modelform und jquery erhalten?] (Http://StackOverflow.com/questions/14121132/how-to-get-interpendent-dropdowns-in-django-using-modelform -und-jquery) – e4c5

Antwort

3

Halten Sie author und books in DB.

models.py

Class Author(models.Model): 
    name = models.CharField(max_length=50) 
    ...... 

class Books(models.Model): 
    .... 
    author = models.ForeignField(Author) 
    .... 

Class Library(models.Model): 
    ..... 
    author = models.ForeignKey(Author) 
    books = models.ForeignKey(Books) 
    ..... 

forms.py

class Library(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     super(Library, self).__init__(*args, **kwargs) 
     self.fields['author'].choices = list(Author.objects.values_list('id', 'name')) 

     self.fields['books'].choices = list(Books.objects.values_list('id', 'name')) 


    class Meta: 
     Model: Library 

Basierend auf Author Auswahl, Auslöser von Ajax-Aufruf und erhalten Sie alle books die entsprechenden.

+0

Danke Anoop !! –