Django创建复合属性

时间:2013-05-20 22:53:56

标签: django django-models

如果我有一个Person模型如下:

class Person
    first_name = models.CharField
    last_name = models.CharField

我想创建一个复合属性全名,它将是名字和姓氏的组合。

full_name = self.first_name + ' ' + self.last_name

此外,只要修改人员模型中的名字,就应该自动更新full_name。

2 个答案:

答案 0 :(得分:4)

只需在模型上设为property即可。

class Person(...):
   ...
  @property
  def full_name(self):
    return u'%s %s' % (self.first_name, self.last_name)

答案 1 :(得分:1)

我发现可以通过覆盖自定义保存方法来完成。

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)