Nat*_*tim 29 django django-models django-forms
如果我进入编辑表单,我想显示一条警告消息,如果我是Django ModelForm的创建形式,则隐藏它.
form.is_bound
告诉我表单是否先前已填充,但如何测试ModelForm是否设置了现有实例?
我试过这个,hasattr(form.instance, 'pk')
但这是正确的方法吗?
干杯,
Natim
Ala*_*air 51
请检查是否form.instance.pk
是None
.
hasattr(form.instance, 'pk')
将始终返回True
,因为每个模型实例都有一个pk
字段,即使它尚未保存到数据库中.
由于现有实例将作为带有关键字的参数传递instance
以创建模型表单,因此您可以在自定义初始值设定项中观察到这一点。
class Foo(ModelForm):
_newly_created: bool
def __init__(self, *args, **kwargs):
self._newly_created = kwargs.get('instance') is None
super().__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)