(Django 1.10)引用ForeignKey引用的对象的属性

时间:2016-11-15 11:03:31

标签: python django django-1.10

在我的应用中,每个对象 Kurs 都需要一个字段'prowadzacy',指定给定 Kurs 所属的用户。因此,我的models.py具有以下内容:

class Kurs(models.Model):
    prowadzacy = models.ForeignKey(User)

我还需要知道拥有给定 Kurs 的用户的名字。在shell中,以下工作:

>>> k=Kurs.objects.get(id=1)
>>> k
<Kurs: Wprowadzenie do epi 2>
>>> k.prowadzacy
<User: leszekwronski>
>>> k.prowadzacy.first_name
u'Leszek'

最终我需要在 Kurs 对象中包含一个字段,该字段包含转换拥有者的名字和姓氏的过程结果。 作为第一步,我想添加一个只包含名字的字段。但是,当我修改models.py以包含以下内容时:

class Kurs(models.Model):
    prowadzacy = models.ForeignKey(User)
    imie = prowadzacy.first_name

然后我收到以下错误:

AttributeError: 'ForeignKey' object has no attribute 'first_name'

我尝试使用'self.prowadzacy.first_name'而不仅仅是'prowadzacy.first_name',但无济于事:

NameError: name 'self' is not defined

我做错了什么?阅读this之后,我怀疑在完成特定模型的定义之前,我无法引用模型中字段的名称。然而,1)我不确定并且会感谢果断的'是'或'否'和2)如果是这样的话,我怎么能引用“特定用户的第一个名字,即a的价值我现在定义的模型中的不同字段“?

1 个答案:

答案 0 :(得分:2)

“程序”是指一种方法。如果您希望Kurs模型能够显示完整的用户名,请编写一个方法来执行此操作。

def trailing(s):
    return len(s) - len(s.rstrip('0'))