Python 将self.user作为foreignkey返回
我有一个带外国钥匙的模型。对于这个型号,我想将'defstr'设置为用户 我已经这样做了Python 将self.user作为foreignkey返回,python,django,django-models,Python,Django,Django Models,我有一个带外国钥匙的模型。对于这个型号,我想将'defstr'设置为用户 我已经这样做了 from django.contrib.auth import get_user_model User = get_user_model() class Rosters(models.Model): place = models.ForeignKey('Places') position = models.ForeignKey('Positions', blank=Tru
from django.contrib.auth import get_user_model
User = get_user_model()
class Rosters(models.Model):
place = models.ForeignKey('Places')
position = models.ForeignKey('Positions', blank=True, null=True)
user = models.ForeignKey(User, related_name='roster')
validfrom = models.DateTimeField(blank=True, null=True)
validto = models.DateTimeField(blank=True, null=True)
def __str__(self):
return self.user
这将获取用户名并显示在管理员页面中。但是当我尝试创建一个新的名册时。我得到一个TypeError\uuuu str\uuuu返回的非字符串(type User)
我可以删除“defstr…”并创建一个没有问题的花名册。但每个花名册在管理页面中显示为对象。因此,我可以添加回“defstr”,以查看每个名册的用户名
我希望它们始终显示为用户名。我不明白为什么在添加名册时它不起作用。正如您的错误所示:
TypeError __str__ returned non-string (type User)
\uuuu str\uuuu
方法应该返回一个str
,在这里,您将返回一个对象(User
)
您应该返回
return self.user.\uuu str\uuuuu
(用户的str
表示)。只能从\uu str\uuuu
返回字符串,而不能返回作为对象的用户
def __str__(self):
return self.user.username
您需要显示希望显示的用户的属性
def __str__(self):
return self.user
应返回以下任何内容(或类似内容)
您需要参考要显示的“用户”中的特定字段。 尝试:
.username
可以替换为用户模型具有的任何属性。i、 电子邮件、名字、姓氏等
return str(self.user)
return self.user.get_username()
return self.user.get_full_name()
def __str__(self):
return self.user.username