基于Django中的PK计算字段值

2024-05-09 01:08:09 发布

您现在位置:Python中文网/ 问答频道 /正文

目标:将customer_number设置为b_country+id+10000的计算值

型号.py

class Customer(models.Model):

    id = models.BigAutoField(primary_key=True)
    customer_number = models.CharField("Customer #", max_length=10, default=0)
    b_country = models.TextField("Country", max_length=2, choices=COUNTRY_OPTIONS)

    @property
    def get_customer_number(self):
        a = self.b_country
        b = (self.id + 10000)
        return a + str(b)

    def save(self, *args, **kwarg):
        self.customer_number = self.get_customer_number
        super(Customer, self).save(*args, **kwarg)

问题:提交表单以创建新客户(新记录)时,出现以下错误:

a 'CA'
self Error in formatting: TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'>

当我已经有一个记录(更新和现有客户的信息),然后代码工作良好。据我所知,它无法获取id,因为它在发送到模型之前仍在验证数据,因此没有Customer.id可用于此实例

问题:有没有更干净的方法来设置基于PK的customer_number