我有一个带有外键的模型。对于这个模型,我想将“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
这将获取用户名并显示在管理页面中。但是当我尝试创建一个新的花名册时。我收到 TypeError __str__ returned non-string (type User)
我可以删除“def str...”并毫无问题地创建名册。但是每个名册在管理页面中都显示为对象。所以我可以加回 'def str..' 以查看每个花名册的用户名。
我希望它们始终显示为用户名。我不明白为什么在我添加名册时它不起作用。
请您参考如下方法:
您需要引用要显示的“用户”中的特定字段。 尝试:
def __str__(self):
return self.user.username
