【问题标题】:'max_length' must be a positive integer'max_length' 必须是正整数
【发布时间】:2017-10-25 12:37:58
【问题描述】:

有什么方法可以找出这个错误涉及的文件是什么?

serverad@ubuntu:~/django14_project/my_django15_project$ python manage.py runserver --traceback --settings=settings -v 3
Performing system checks...

Unhandled exception in thread started by <function wrapper at 0x7fc853a639b0>
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/django/utils/autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/commands/runserver.py", line 125, in inner_run
    self.check(display_num_errors=True)
  File "/usr/local/lib/python2.7/dist-packages/django/core/management/base.py", line 405, in check
    raise SystemCheckError(msg)
django.core.management.base.SystemCheckError: SystemCheckError: System check identified some issues:

ERRORS:
events.SystemLog.text: (fields.E121) 'max_length' must be a positive integer.
events.SystemLog.type: (fields.E121) 'max_length' must be a positive integer.

System check identified 2 issues (0 silenced).

这是我们最后一位程序员留下的系统日志模块

class SystemLog(models.Model):
user = models.ForeignKey(User, related_name='log_actions')
chapter = models.ForeignKey(Chapter, null=True, blank=True, default=None, 
related_name="logs")
affected = models.ForeignKey(User, related_name='log_entries', null=True, 
blank=True)
type = models.CharField(max_length='20')
text = models.CharField(max_length='100')
date = models.DateTimeField(auto_now_add=True)
read = models.BooleanField(default=False)
is_personal = models.BooleanField(default=False)

【问题讨论】:

  • 提供你的models.py文件。看来你的模型有问题
  • 请更新您的问题以包含您的 models.py 文件:)

标签: python django python-2.7


【解决方案1】:

您似乎在settings.INSTALLED_APPS 中包含了应用程序events,它定义了模型SystemLog

此模型具有字段text 和字段type,其定义包括关键字max_length,其值不是正整数。

如果您使用 Eclipse/PyDev,您可以按 Ctrl+ Shift + R 并输入 SystemLog 来查找该类。

编辑

鉴于实际模型,max_length 被赋予了一个字符串而不是一个整数...

【讨论】:

  • 我已更新问题以包含 SystemLog 模块。我刚刚从我们的老程序员那里得到了这段代码,所以我不知道他做了什么。
【解决方案2】:

您可以在 notepad++ 或 pycharm 等中进行正则表达式搜索

max_length=[^\d]

就您当前的位置而言,您有两个字符串

type =  models.CharField(max_length='20')
text = models.CharField(max_length='100')

应该是:

type =  models.CharField(max_length=20)
text = models.CharField(max_length=100)

【讨论】:

  • 实际上错误说他的 max_length 可能根本不是整数 - 所以 regexp 应该更像 max_length=.*
  • @Sayse 已按照您所说的进行更改,但仍然给我同样的错误。
  • @EthanBaxter - 很可能还有错误创建的迁移文件......因此正则表达式搜索
  • @Sayse 我在错误的模块文件中。它现在几乎可以工作了。现在它说文件“/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py”,第 82 行,在 load_middleware mw_instance = middleware(handler) TypeError: object() 没有参数
猜你喜欢
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 2021-07-30
  • 2013-09-18
  • 2021-03-16
  • 1970-01-01
相关资源
最近更新 更多