在我的应用中,每个对象 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的价值我现在定义的模型中的不同字段“?
答案 0 :(得分:2)
“程序”是指一种方法。如果您希望Kurs模型能够显示完整的用户名,请编写一个方法来执行此操作。
def trailing(s):
return len(s) - len(s.rstrip('0'))