Я пытался создать поле пользовательской модели и использовать его в модели, как показано в документации для BetterCharField, показанной здесь (возможно, вам придется прокрутить немного вниз): https://docs.djangoproject.com/en/3.0/h ... base-types
Мой код в моем файле models.py выглядит следующим образом, почти дословно из документации пример:
Traceback (most recent call last):
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/db/migrations/state.py", line 413, in from_model
fields.append((name, field.clone()))
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 512, in clone
return self.__class__(*args, **kwargs)
TypeError: __init__() missing 1 required positional argument: 'max_length'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "manage.py", line 21, in
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/commands/makemigrations.py", line 142, in handle
ProjectState.from_apps(apps),
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/db/migrations/state.py", line 221, in from_apps
model_state = ModelState.from_model(model)
File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/db/migrations/state.py", line 418, in from_model
e,
TypeError: Couldn't reconstruct field my_field on polls.MyModel: __init__() missing 1 required positional argument: 'max_length'
Почему это не удается? Мне еще не приходилось создавать какие-либо миграции для этого проекта, не говоря уже о поле и модели, представленных здесь. Мой позиционный аргумент равен 25, переданный BetterCharField, когда я инициализирую его в файле models.py. Что мне не хватает? У меня был гораздо более сложный вариант использования, но я построил этот пример в совершенно новом тестовом проекте/приложении Django прямо из документации, и он все равно не работает.
Я пытался создать поле пользовательской модели и использовать его в модели, как показано в документации для BetterCharField, показанной здесь (возможно, вам придется прокрутить немного вниз): https://docs.djangoproject.com/en/3.0/howto/custom-model-fields/#custom-database-types
Мой код в моем файле models.py выглядит следующим образом, почти дословно из документации пример:
class MyModel(models.Model): my_field = BetterCharField(25) [/code]
Однако при попытке запустить python Manage.py makemigrations с этим файлом models.py я каждый раз получаю следующую ошибку:
[code]Traceback (most recent call last): File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/db/migrations/state.py", line 413, in from_model fields.append((name, field.clone())) File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/db/models/fields/__init__.py", line 512, in clone return self.__class__(*args, **kwargs) TypeError: __init__() missing 1 required positional argument: 'max_length'
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "manage.py", line 21, in main() File "manage.py", line 17, in main execute_from_command_line(sys.argv) File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line utility.execute() File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/base.py", line 328, in run_from_argv self.execute(*args, **cmd_options) File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/base.py", line 369, in execute output = self.handle(*args, **options) File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/base.py", line 83, in wrapped res = handle_func(*args, **kwargs) File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/core/management/commands/makemigrations.py", line 142, in handle ProjectState.from_apps(apps), File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/db/migrations/state.py", line 221, in from_apps model_state = ModelState.from_model(model) File "/Users/dark_knight/test/venv/lib/python3.7/site-packages/django/db/migrations/state.py", line 418, in from_model e, TypeError: Couldn't reconstruct field my_field on polls.MyModel: __init__() missing 1 required positional argument: 'max_length' [/code]
Почему это не удается? Мне еще не приходилось создавать какие-либо миграции для этого проекта, не говоря уже о поле и модели, представленных здесь. Мой позиционный аргумент равен 25, переданный BetterCharField, когда я инициализирую его в файле models.py. Что мне не хватает? У меня был гораздо более сложный вариант использования, но я построил этот пример в совершенно новом тестовом проекте/приложении Django прямо из документации, и он все равно не работает.