【发布时间】:2014-01-16 14:38:54
【问题描述】:
我正在尝试创建一个 ModelForm 来更新具有外键的表。我所拥有的似乎有效,但我希望有人能告诉我是否有更好的方法可以做到这一点,或者我在下面的做法是否有问题。
在Author 和Genres 表上使用查询集是否正确?感觉我应该在 Book 模型上使用查询集,并将外键与这些表相关联。
models.py:
class Author(models.Model):
name = models.CharField(max_length=200)
class Genre(models.Model):
name = models.CharField(max_length=200)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey('Author')
genre = models.ForeignKey('Genre')
forms.py:
class BookForm(ModelForm):
title = forms.CharField(max_length=200)
author = forms.ModelChoiceField(queryset=Author.objects.all())
genre = forms.ModelChoiceField(queryset=Genre.objects.all())
class Meta:
model = Book
fields = ['title', 'author', 'genre']
views.py:
def add_book(request):
if request.method == 'POST':
form = BookForm(request.POST)
if form.is_valid():
form.save(commit=True)
return HttpResponseRedirect('/add/')
else:
form = BookForm()
【问题讨论】: