【问题标题】:Django ModelForm save using db_alias param "using"Django ModelForm 使用 db_alias 参数“使用”保存
【发布时间】: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


    【解决方案1】:

    简短回答:很遗憾,您不能以这种方式保存表单。如果您的表单不包含 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 挂钩才能使其正常工作。我所做的是从基础模型表单创建一个新的模型表单类,并获得之前描述的(部分)功能。

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

    【讨论】:

    • 感谢您的回答。希望它会尽快好起来。
    猜你喜欢
    • 2012-07-23
    • 2022-10-02
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多