Python 如何调用/引用django中相同模型中的其他属性
我正在创建一个web应用程序,用于创建机器或设备的提案/报价。我有一个具有以下属性的Python 如何调用/引用django中相同模型中的其他属性,python,django,properties,model,Python,Django,Properties,Model,我正在创建一个web应用程序,用于创建机器或设备的提案/报价。我有一个具有以下属性的QuotationItem模型: 在my models.py中: class QuotationItem(models.Model): product = models.Charfield(max_length=30) quantity = models.PositiveIntegerField(default=1) description = models.CharField(max_l
QuotationItem
模型:
在my models.py中:
class QuotationItem(models.Model):
product = models.Charfield(max_length=30)
quantity = models.PositiveIntegerField(default=1)
description = models.CharField(max_length=200, null=True)
line_number = models.PositiveIntegerField()
tagging = models.CharField(max_length=50)
现在,我想连接两个属性(线号和标记)。例如:
line_number = 1,
tagging = "Equipment - 1"
line_number = 2,
tagging = "Equipment - 2"
简言之,我想将tagging
属性设置为默认值f“Equipment-{line\u number}”
我希望
请求的那部分。数据
是行号
,因此,如果没有提供,我希望标记
具有上述默认值。在模型中是否有这样做的方法?还是应该在视图中处理此问题?字段定义中使用的默认值(即使在使用可调用项时)无权访问实例。您必须覆盖save
或连接到pre_save
信号:
class QuotationItem(models.Model):
# ...
def save(self, *args, **kwargs):
if not self.pk: # initial creation
self.tagging = f"Equipment - {self.line_number}"
super().save(*args, **kwargs)
谢谢@schwobasegl。我实际上想要的是,如果
请求.data中没有提供任何标记,则将self.tagging
设置为f“设备-{self.line\u number}”
。我对你的代码做了一些小的修改,它成功了:如果不是self.pk,也不是self.tagging:
另外,我在tagging中添加了null=True
,因为它在创建时不接受任何值(尽管它实际上应该是null=False
)