Skip to main content
 首页 » 编程设计

python之将 self.user 作为外键返回

2025年05月04日11lidabo

我有一个带有外键的模型。对于这个模型,我想将“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