Django Bookに従って本/著者/出版社を含む基本的なDjangoアプリを作成しました-ModelFormを使用して既存の本を変更する手段を作成しようとしています-問題は、「著者」フィールドがManyToManyFieldであり、 ModelForm で選択肢を選択すると、既存の選択肢が消去され、新しい選択肢は保存されませんか?
models.py
class Book(models.Model):
title = models.CharField(max_length=100)
authors = models.ManyToManyField2(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
def __unicode__(self):
return self.title
class BookForm(ModelForm):
class Meta:
model = Book
authors = forms.ModelMultipleChoiceField(queryset=Author.objects.all(), required=False)
ビュー.py
def editBook(request, b=None):
instance = None
if b is not None:
instance = Book.objects.get(title=b)
if request.method == 'POST':
form = BookForm(request.POST, instance=instance)
if form.is_valid():
form.save()
return HttpResponseRedirect('/contact/thanks/')
else:
form = BookForm(instance=instance)
return render_to_response('book_form.html', {'form':form})
乾杯!
編集 views.py で次のことを奨励するいくつかの記事を見つけました
authors = form.save(commit=False)
authors.user = request.user
authors.save()
form.save_m2m()
しかし、まだ運がありません。これほど難しいことはありません。