【发布时间】:2011-06-25 02:50:25
【问题描述】:
是否可以使用不同于“默认”的 db_alias 保存 ModelForm 对象数据
my_form = MyModelForm(request.POST)
my_form.save(commit=True,using="db_alias")
以及使用模型实例保存数据? 谢谢。
【问题讨论】:
标签: database django alias django-forms
是否可以使用不同于“默认”的 db_alias 保存 ModelForm 对象数据
my_form = MyModelForm(request.POST)
my_form.save(commit=True,using="db_alias")
以及使用模型实例保存数据? 谢谢。
【问题讨论】:
标签: database django alias django-forms
简短回答:很遗憾,您不能以这种方式保存表单。如果您的表单不包含 ForeignKey 或 m2m 字段(或者您自己控制它们,例如使用自动完成字段等),您可以在表单之后处理对象:
_obj = _form.save(commit=False)
_obj.save(using=_db_alias)
长答案:如果您希望模型表单表现得像具有 ForeignKeys 和 m2m-fields 的普通模型,则类似于:
# The form's foreign_keys and m2m-fields get the data from the db_alias database
# and evertyhing is sdisplayed correctly on the template.
_form = myModelForm(request, db_alias=_db_alias)
# The form saves to the correct DB and foreigns & M2ms are matched correctly in this DB
# _form.save()
虽然这是理想的,但您不能使用这种行为。您需要在 Django 代码中更改许多 DB 挂钩才能使其正常工作。我所做的是从基础模型表单创建一个新的模型表单类,并获得之前描述的(部分)功能。
希望这会有所帮助,并且很快就会有更好的解决方案。
【讨论】: