【问题标题】:Error: __str__ returned non-string (type ModelName) in Django错误:__str__ 在 Django 中返回非字符串(ModelName 类型)
【发布时间】:2022-01-23 22:12:33
【问题描述】:

我正在尝试创建一个类似于 github 的问题跟踪器。我一直在尝试实现分配功能,这就是我目前所拥有的

class Assign(models.Model):
    name = models.OneToOneField(User, on_delete=models.SET_NULL, null=True)
    

class Issue(models.Model):
    MARK_AS = ((True, 'Open'), (False, 'Closed'))

    title = models.CharField(max_length=100)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    assignee = models.ForeignKey(Assign, on_delete=models.SET_NULL, null=True)
    mark_as = models.BooleanField(choices=MARK_AS, default=True)
    

    def __str__(self):
        return self.title
    

    def get_absolute_url(self):
        return reverse('issue-detail', kwargs={'pk': self.pk})

admin page 我觉得我很接近,但是当我尝试使用时

class Assign(models.Model):
    name = models.OneToOneField(User, on_delete=models.SET_NULL, null=True)
    
    def __str__(self):
        return self.name

我得到了错误

__str__ returned non-string (type User)

任何关于如何解决这个问题的想法?谢谢。

【问题讨论】:

    标签: python django


    【解决方案1】:

    错误描述

    str 返回非字符串(用户类型)表示对象表示方法,即Assign.__str__() 方法应始终返回字符串,而不是像您在那里返回的对象。

    解决方案

    把你的Assign Model str()方法改成这样。

    def __str__():
       return self.name.username
    

    注意:

    您不应该总是像我在那里所做的那样返回 self.user.username,但实际上您可以返回 User 模型中具有 CharField 属性的任何字段。

    【讨论】:

    • 感谢您的快速回复
    • 欢迎和愉快的编码!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2017-03-29
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    相关资源
    最近更新 更多