如何在 Forms.py 中执行 Django Chained Select?
How to do Django Chained Select In Forms.py?
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,
)
如果用户 Select 作者是 Jk Rowling,必须在书籍选择字段中填写哈利波特系列(1 到 4 个选择)
如果用户 select 作者为 Agatha Christie 那么只有 (5 到 8) 必须填写在书籍选择字段中
如果用户 select 作者是马克吐温那么只有( 8 到 11 )选项必须填充在书籍选择字段的 select 小部件中
我想过滤选项有人能帮忙吗?
在数据库中保留 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
.
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,
)
如果用户 Select 作者是 Jk Rowling,必须在书籍选择字段中填写哈利波特系列(1 到 4 个选择)
如果用户 select 作者为 Agatha Christie 那么只有 (5 到 8) 必须填写在书籍选择字段中
如果用户 select 作者是马克吐温那么只有( 8 到 11 )选项必须填充在书籍选择字段的 select 小部件中
我想过滤选项有人能帮忙吗?
在数据库中保留 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
.