我已經創建了一個基本的Django應用程序,該應用程序包含根據Django書籍的書籍/作者/發佈者 - 嘗試使用ModelForm創建修改現有書籍的方法 - 問題在於'作者'字段是一個ManyToManyField,當我在ModelForm上選擇一個選項時,它只是擦除現有的選擇並且不保存新的選擇?使用ModelForm和ModelMultipleChoiceField保存到ManyToManyFields
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)
views.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()
但仍然沒有任何運氣 - 不能這麼難!
究竟如何手動處理呢?對於nub問題的歉意,但一直在努力爭取一段時間! – jonseager
@jonseager你爲什麼需要這個?只要刪除這個'authors = ...'行,一切都會按你的意願工作。 – DrTyrsa
我把它刪除了一段時間 - 它仍然沒有保存。表單被正確讀取,因爲我可以輸出的清潔數據到shell,它顯示作者 - 但仍然不實際保存?謝謝你的幫助! – jonseager