gpt4 book ai didi

Django 设计模式 - 用于创建和更新模型的表单

转载 作者:行者123 更新时间:2023-12-04 20:22:49 24 4
gpt4 key购买 nike

假设我想创建和更新一个模型。显示哪些字段和验证类型取决于操作(创建或更新)。但它们仍然共享许多相同的验证和功能。有没有一种干净的方法让 ModelForm 处理这个(除了实例存在于任何地方)还是我应该只创建两个不同的模型表单?

最佳答案

两种可能性浮现在脑海中。您可以在表单的 __init__ 中设置一个属性。方法,要么基于您明确传入的参数,要么基于是否 self.instance存在并且有一个非 None pk:

class MyModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
# either:
self.edit = kwargs.pop('edit', False)
# or:
self.edit = hasattr(self, instance) and self.instance.pk is not None
super(MyModelForm, self).__init__(*args, **kwargs)
# now modify self.fields dependent on the value of self.edit

另一种选择是对您的模型表单进行子类化 - 将联合功能保留在基类中,然后在子类中保留特定的创建或更新功能。

关于Django 设计模式 - 用于创建和更新模型的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4579845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com