2016-05-16 1 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, 
    ) 

Если пользователь Выбери Автор Как Дж.К.Роулинг серия горшечника Гарри должна быть населена в поле выбора книг (от 1 до 4 вариантов)Как сделать Django Chained Select In Forms.py?

Если пользователь выбрать автор, Агат Кристи Тогда только (5 до 8) должны быть заполнены в поле выбора книг

Если пользователь выбрать Автор как Марк Твен Тогда только (от 8 до 11) выбор должен быть населен в выбранном виджете поля выбора книг

Я хочу, чтобы фильтровать выбор может кто-нибудь помочь?

+1

Возможный дубликат [Как получить взаимозависимые выпадающие списки в django с использованием Model и jquery?] (Http://stackoverflow.com/questions/14121132/how-to-get-interdependent-dropdowns-in-django-using-modelform -and-jquery) – e4c5

ответ

3

Держать author и books в БД.

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 

основе Author выбора, триггера от Ajax вызова и получить все соответствующие books.

+0

Спасибо Anoop! –