Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将self.user作为foreignkey返回_Python_Django_Django Models - Fatal编程技术网

Python 将self.user作为foreignkey返回

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

我有一个带外国钥匙的模型。对于这个型号,我想将'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=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