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 ..'来查看每个名单的用户名.
我希望它们始终显示为用户名.当我添加名单时,我无法弄清楚为什么它不起作用.
您需要参考要显示的"用户"中的特定字段.尝试:
def __str__(self):
return self.user.username
Run Code Online (Sandbox Code Playgroud)
正如你的错误所示:
TypeError __str__ returned non-string (type User)
Run Code Online (Sandbox Code Playgroud)
该__str__方法应该返回一个str,而在这里,您将返回一个对象 ( User)。
您应该返回return self.user.__str__(str用户的代表)。
| 归档时间: |
|
| 查看次数: |
607 次 |
| 最近记录: |