class Book(models.Model):
title = models.CharField()
genre = models.ManyToManyField(Genre)
class Genre(models.Model):
name = models.Charfield()
class ReadBook(models.Model):
genre = models.ForeignKey(Genre)
books = models.ManyToManyField(Book)
我还有一个ModelForm:
class ReadBookForm(ModelForm):
class Meta:
model = ReadBook
<form action="/add_report/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
目的: 默认情况下,仅向访问者显示一个字段 - 流派。当他完成这个选择时 - 显示书籍模型中与选定类型相关的其他字段。
答案 0 :(得分:2)
内部表格标签:
{{ form.genre }}
<div id="books"></div>
<input type="submit" value="Submit" disabled="yes" />
然后在javascript(jQuery非常适合这个东西):
$('#{{ form.genre.id }}').change(function(){
$('#books').load('{% url get_genre_books %}', {genre: $(this).value()})
});
您必须创建一个视图,该视图将返回应放在此div中的html:
def get_genre_books(request):
genre = get_object_or_404(pk=request.GET.get('genre', None))
# here render a template or something that shouls be multiple selector of the books)
resp = ", ".join(genre.book_set.values_list('title', flat=True))
return HttpResponse(resp)
然后将此视图添加到urls.py。
许多解决方案中的一个:)没有'测试它(只在这里编写,所以可能是某处的小错误):)