【问题标题】:Django: Create a model field referencing a ForeignKey fieldDjango:创建引用 ForeignKey 字段的模型字段
【发布时间】:2013-10-23 18:33:36
【问题描述】:

在 Django 中,给定一个 Person 模型:

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)

我希望能够在 Member 模型中添加一个包含人名的字段。

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

可以定义一个函数:

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

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

当然,我总是可以通过member.person.name 引用它,但这太冗长了。

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

【问题讨论】:

  • 你不能把Member中的方法定义为def person_name(self): return self.person.name吗?
  • 我可以,如示例 2/3 中的帖子(已编辑以包含 self 参数)。但后来我需要用括号调用 member.name() 。不是世界末日,但我的问题是我能否避免它。
  • 您能否进一步解释您要达到的目标或为什么使用括号是一个问题?

标签: django django-models


【解决方案1】:

您可以使用@property as a decorator.

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

现在,您可以将其引用为

member.name

而不是member.name()

现在,name 被视为 Member 类的属性,而不是类方法。

【讨论】:

    猜你喜欢
    • 2018-03-01
    • 1970-01-01
    • 2020-06-06
    • 2017-12-15
    • 2017-04-19
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多