Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在django模型中使用前缀和主键组合保存charfield列?_Django_Postgresql_Django Models - Fatal编程技术网

在django模型中使用前缀和主键组合保存charfield列?

在django模型中使用前缀和主键组合保存charfield列?,django,postgresql,django-models,Django,Postgresql,Django Models,我创建了一个模型“PurchaseRequest”。pk是自动创建的。现在,我创建了一个charfield列,它将在保存过程中存储一个类似“PR#+pk”的值 def save(self, force_insert=False, force_update=False, using=None, update_fields=None): self.pr_number = 'PR #' + str(self.id) super(PurchaseRequest, se

我创建了一个模型“PurchaseRequest”。pk是自动创建的。现在,我创建了一个charfield列,它将在保存过程中存储一个类似“PR#+pk”的值

 def save(self, force_insert=False, force_update=False, using=None,
         update_fields=None):
    self.pr_number = 'PR #' + str(self.id)
    super(PurchaseRequest, self).save()

但是,它返回PR#None。一旦我编辑并保存了它,它就会返回正确的答案,因为很明显它现在获取了id

您需要先保存对象,然后设置PR字段,然后再次保存

您可以这样做:

 def save(self, **kwargs):
     super(PurchaseRequest, self).save(**kwargs)
     self.pr_number = 'PR #' + str(self.id)
     super(PurchaseRequest, self).save(**kwargs)

嗯,是数据库分配了pk,所以它在保存之后才能出现。所以你需要保存两次,一次获得pk,然后再次更新号码。我知道了。我刚才说,可能的解决办法是什么。保存(通过调用super),然后设置PR,然后再次调用super进行保存。谢谢。解决了的。对不起!你不得不回答你两次。