【发布时间】:2019-05-26 22:20:37
【问题描述】:
我在这里打开了一个关于未保存在 Django Createview 中的多字段的先前问题。 Django CreateView With ManyToManyField今天排查了大半,发现这段代码确实有效:
class CreateAuthorView(LoginRequiredMixin,CreateView):
def form_valid(self, form):
instance = form.save(commit=False)
instance.save()
instance = form.save()
if instance.access_level == "Custom":
obj = NewAuthor.objects.get(secret=instance.name)
obj.access.add(instance.created_by.id)
print(instance.created_by.id)
print(obj.access.all())
instance = form.save()
obj.save()
form.save_m2m()
instance = form.save()
return super(CreateAuthorView, self).form_valid(form)
当我发出 print(obj.access.all()) 时,我可以在控制台中看到
obj.access.add(instance.created_by.id)
代码行实际上完全符合我的要求...它将 created_by.id 添加到我在模型中定义的 access(ManyToManyField) 字段中。但是,当记录实际被剪切时,只有用户在表单中选择的值被添加到访问字段中,而 created_by.id 永远不会进入数据库。
我应该在其他地方覆盖 CreateView 以使 created_by 生效吗?我怀疑我在 form_valid 中的初始更新似乎被覆盖了。实际上我已经证明了这一点,因为我的更新实际上是在我的控制台中,但没有进入数据库。提前感谢您对如何最好地解决问题的任何想法。
【问题讨论】:
标签: django django-models django-forms django-templates django-views