Django ModelForm保存使用db_alias参数“使用”

时间:2011-02-10 19:54:15

标签: database django alias django-forms

是否可以使用与“default”

不同的db_alias保存ModelForm对象数据
my_form = MyModelForm(request.POST)
my_form.save(commit=True,using="db_alias")

以及使用模型实例保存数据? 谢谢。

1 个答案:

答案 0 :(得分:0)

简答:不幸的是,你无法以这种方式保存表格。如果表单不包含ForeignKey或m2m字段(或者您自己控制它们,例如使用自动填充字段等),则可以在表单后处理该对象:

_obj = _form.save(commit=False)
_obj.save(using=_db_alias)

答案很长:如果你想让modelform的行为与使用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代码中更改许多数据库挂钩才能使其正常工作。我所做的是从基础模型中创建一个新的模型表类,并获得之前描述的(部分)功能。

希望这会有所帮助,并且很快就能推出更好的解决方案。