将self.user作为foreignkey返回

sum*_*pen 1 python django django-models

我有一个外国人的模型.对于这个模型,我想将'def str '设置为用户.

我做到了这一点

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
Run Code Online (Sandbox Code Playgroud)

这将获取用户名并显示在管理页面中.但是,当我尝试创建一个新的名册.我得到一个TypeError __str__返回非字符串(类型为User)

我可以删除'def str ...'并创建一个没有问题的名册.但每个名册在管理页面中显示为对象.所以我可以添加'def str ..'来查看每个名单的用户名.

我希望它们始终显示为用户名.当我添加名单时,我无法弄清楚为什么它不起作用.

cbu*_*800 6

您需要参考要显示的"用户"中的特定字段.尝试:

def __str__(self):
    return self.user.username
Run Code Online (Sandbox Code Playgroud)


Clé*_*oix 5

正如你的错误所示:

TypeError __str__ returned non-string (type User)
Run Code Online (Sandbox Code Playgroud)

该__str__方法应该返回一个str,而在​​这里,您将返回一个对象 ( User)。

您应该返回return self.user.__str__(str用户的代表)。