2013-10-23 170 views
1

在Django中,赋予了人物模型:Django的:创建一个模型字段引用一个ForeignKey场

class Person(models.Model): 
    person_id = models.AutoField(primary_key=True, blank=False, null=False) 
    name = models.CharField(max_length=256, blank=False, default="") 

和会员模型,有一个人作为一个外键:

class Member(models.Model): 
    member_id = models.AutoField(primary_key=True, blank=False, null=False) 
    person = models.ForeignKey(Person) 

我我希望能够向包含人员姓名的会员模型添加一个字段。

我已经试过: name = person.namename = self.person.name 没有运气。

可以定义一个函数:

def name(self): 
    return self.person.name 

...但我需要用括号引用它:member.name()

,当然,我总是可以只通过引用它member.person.name,但这是非常详细的。

有没有办法定义这个属性?

+0

你不能在'Member'中定义一个方法为'def person_name(self):return self.person.name'? – karthikr

+0

我可以,例如2/3通过帖子(编辑包含自我参数)。但后来我需要用parens调用member.name()。不是世界末日,但我的问题是我能否避免它。 – Joe

+0

你能否进一步解释你正在尝试存档或为什么使用parens是一个问题? – yuvi

回答

2

可以使用@property as a decorator.

@property 
def name(self): 
    return self.person.name 

现在,你可以参考它作为

member.name 

,而不是member.name()

现在,name被视为财产上Member类,而不是类方法。

相关问题