测试Django ModelForm是否在自定义模型上有实例

时间:2015-11-24 06:53:02

标签: python django

相关问题:Test if Django ModelForm has instance

根据上面的问题和答案,我们可以检查一个模型表格是否有ArrayList<String> abc = new DemoAsynch().execute().get(); 实例,因为hasattr(form.instance, 'pk')必须有instance

我误解了相关的问题。它说

  

尝试检查pk是否为form.instance.pk

在我的情况下,模型的主键被自定义为:

None

模型形式:

class MyModel(Model):
    myid = models.CharField(max_length=10, primary_key=True)
    ...
class MyModelForm(ModelForm): class Meta: model = MyModel 之后

在实例上具有pk属性:

is_valid()

我的问题是: 在这种情况下,如何检查是否使用现有实例设置了模型? 或者,如何检查模型的模式是否为&#34;在现有条目上进行编辑&#34; /&#34;我们的DB&#34;

的新条目

1 个答案:

答案 0 :(得分:1)

如果您的模型具有主键列,则该模型的?- substitution(a+b+[c,d,a], a, 2, R). R = 2+b+[c, d, 2] ; false. 属性将始终存在,并且是该字段的别名。

在您的情况下,您不想检查pk是否有名为form.instance的属性(pk行)。相反,您必须检查hasattr的属性pk是否为空:

form.instance

如果它是一个尚未保存的新模型,则data = {'myid': '123'} form = MyModelForm(data=data, instance=None) form.is_valid() if form.instance.pk: print('This has a pk! It was saved before!') else: print('This has no pk! It was never saved!') 字段的值将为form.instance.pk(空字符串),其在if语句中的计算结果为u'' ,这就是你做到的。