在django模型中使用前缀和主键组合保存charfield列?
我创建了一个模型“PurchaseRequest”。pk是自动创建的。现在,我创建了一个charfield列,它将在保存过程中存储一个类似“PR#+pk”的值在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
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进行保存。谢谢。解决了的。对不起!你不得不回答你两次。