如何更改 Django 表單中多對多欄位的值?
最好,我想更改def form_valid我的Modelview. 這是form_valid我認為我遇到問題的一部分:
lesson = Lesson.objects.all().first()
for i in lesson.weekday.all():
form.instance.weekday.add(i)
form.instance.save()
這里,weekday是一個多對多的欄位。但是,表單保存的是用戶的"submitted"值weekday,而不是如上面代碼所示更改的值。有趣的是,下面的代碼有效,盡管它不是多對多欄位:
form.instance.name = lesson.name
form.instance.save()
uj5u.com熱心網友回復:
我懷疑您在呼叫 super 方法之前正在運行代碼。super 方法中的代碼可能如下所示:
def form_valid(self, form):
self.object = form.save()
return super(ModelFormMixin, self).form_valid(form)
當 form.save()運行清除所有多對多相關的值,并設定表單值。
可能您需要在呼叫 super 方法后運行您的代碼:
def form_valid(self, form):
# some code here...
return_value = super(MyView, self).form_valid(form)
lesson = Lesson.objects.all().first()
for i in lesson.weekday.all():
self.object.weekday.add(i)
# self.object.save() # Dont need call save here
return return_value
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/378555.html
