django - 管理错误 : __str__ returned non-string (type NoneType)

标签 django model typeerror admin

尝试将实例添加到我的模型之一时,管理员返回此错误。模型本身有一个正确的 str() 方法,并且还不包含任何实例。还尝试用静态方法替换 str() 方法或将其完全删除。运气不好。

该错误似乎表明管理员的历史记录部分出了问题。 Stacktrace 指向第 33 行。

Error during template rendering

In template /Users/snirp/juis/snirpdrive/glotto/venv/lib/python3.6/site-packages/django/contrib/admin/templates/admin/change_form.html, error at line 33
__str__ returned non-string (type NoneType)
23  {% endblock %}
24  {% endif %}
25  
26  {% block content %}<div id="content-main">
27  {% block object-tools %}
28  {% if change %}{% if not is_popup %}
29    <ul class="object-tools">
30      {% block object-tools-items %}
31      <li>
32          {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
33          <a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
34      </li>
35      {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
36      {% endblock %}
37    </ul>
38  {% endif %}{% endif %}
39  {% endblock %}
40  <form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
41  <div>
42  {% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
43  {% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}

这些是我的 models.pyadmin.py 的相关部分

class UserContent(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    created_by = models.ForeignKey(User, related_name='%(class)s_creator')
    updated_by = models.ForeignKey(User, related_name='%(class)s_updater')

    class Meta:
        abstract = True


class Linetrans(UserContent):
    line = models.ForeignKey(Line)
    translation = models.ForeignKey(Translation)
    text = models.CharField(max_length=400)

    def __str__(self):
        return self.text

    class Meta:
        ordering = ['line']

admin.site.register(Linetrans)

其他模型类非常相似,并且不会返回错误。当 Linetrans 作为内联添加到另一个管理类时也会发生此错误。

编辑/更新:我注释掉了模型中的所有其他 str() 方法,果然错误似乎消失了。现在尝试查明问题。

最佳答案

事实证明,相关模型中存在意外的空 CharField。留下这个答案,因为它可能对其他人有帮助。

通过系统地注释模型的 __str__() 方法来解决问题,直到找到有问题的模型。从那里开始识别违规记录。

关于django - 管理错误 : __str__ returned non-string (type NoneType),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42229923/

相关文章:

cakephp - $_schema var in models 中的每个键在 CakePHP 中的作用是什么?

java - Spring:使模型可供 Controller 使用的正确方法?

java - 如何使用 python 连接到 JMX 代理

python - django 多对多通过

python - 在 django 中将 JSON 显示为模板列表

java - 如何在javax.print中获取打印机的型号?

python - 将 Python ElementTree 写入文件会抛出 TypeError

javascript - JS : "TypeError: ' undefined' is not an object"

python - 类型错误:不支持的操作数类型 - : 'int' 和 'list'

django - 迁移 Django 中的用户组和权限?