如果我有一个 Person 模型如下:
class Person
first_name = models.CharField
last_name = models.CharField
我想创建一个复合属性全名,它是名字和姓氏的组合。
full_name = self.first_name + ' ' + self.last_name
此外,每当修改人员模型中的名字时,full_name 应该会自动更新。
如果我有一个 Person 模型如下:
class Person
first_name = models.CharField
last_name = models.CharField
我想创建一个复合属性全名,它是名字和姓氏的组合。
full_name = self.first_name + ' ' + self.last_name
此外,每当修改人员模型中的名字时,full_name 应该会自动更新。
只需将其设为模型上的属性即可。
class Person(...):
...
@property
def full_name(self):
return u'%s %s' % (self.first_name, self.last_name)
我发现这可以通过覆盖自定义保存方法来完成。
class Person
first_name = models.CharField()
last_name = models.CharField()
full_name = models.CharField()
def save(self, *args, **kwargs):
self.full_name = self.first_name + ' ' + self.last_name
super(Person, self).save(*args, **kwargs)