如何解决 TypeError: __init__() 在 Django 中得到意外的关键字参数 '_MAX_LENGTH'

Sun*_*mar 1 python django django-models django-forms django-views

这是我的 models.py 代码。任何人都可以让我知道这段代码有什么问题吗?

 from django.db import models
    from unittest.util import _MAX_LENGTH

    class Album(models.Model):
            artist = models.CharField(_MAX_LENGTH=250)
            album_title = models.CharField(_MAX_LENGTH=500)
            genre = models.CharField(_MAX_LENGTH=100)
            album_logo = models.CharField(_MAX_LENGTH=1000)

    class Song(models.Model):
        album = models.ForeignKey(Album, on_delete = models.CASCADE)
        file_type = models.CharField(_MAX_LENGTH=10)
        song_title = models.CharField(_MAX_LENGTH=250)
Run Code Online (Sandbox Code Playgroud)

运行命令 python manage.py migrations music 时,出现此错误

Traceback (most recent call last):
  File "/home/sunil/workspace/DjangoApp1/manage.py", line 11, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/dist-packages/django/core/management/__init__.py", line 328, in execute
    django.setup()
  File "/usr/lib/python2.7/dist-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/lib/python2.7/dist-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/usr/lib/python2.7/dist-packages/django/apps/config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/home/sunil/workspace/DjangoApp1/music/models.py", line 5, in <module>
    class Album(models.Model):
  File "/home/sunil/workspace/DjangoApp1/music/models.py", line 6, in Album
    artist = models.CharField(_MAX_LENGTH=250)
  File "/usr/lib/python2.7/dist-packages/django/db/models/fields/__init__.py", line 1081, in __init__
    super(CharField, self).__init__(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument '_MAX_LENGTH'
Run Code Online (Sandbox Code Playgroud)

谁能让我知道如何解决这个问题?

fal*_*tru 5

max_length(字段的最大长度)应为小写,且不带前导下划线 (_)。

class Album(models.Model):
    artist = models.CharField(max_length=250)
    album_title = models.CharField(max_length=500)
    genre = models.CharField(max_length=100)
    album_logo = models.CharField(max_length=1000)

class Song(models.Model):
    album = models.ForeignKey(Album, on_delete=models.CASCADE)
    file_type = models.CharField(max_length=10)
    song_title = models.CharField(max_length=250)
Run Code Online (Sandbox Code Playgroud)

_MAX_LENGTHfromunittest.util不是用于 django 模型,而是用于 unittest 的内部用法,以限制要打印的名称的长度。