TypeError: объект 'CharField' не является вызываемым после миграции с django

Вот мой models.py из моего приложения, версия django - 4.0.4, версия python - 3.10.4. Я создал все свои модели и после выполнения makemigrations для генерации базы данных он выдает код ошибки.

from enum import unique
from django.db import models
from django.utils import timezone
from django.core.validators import MinValueValidator, MaxValueValidator

# Create your models here.
class I_Articulos(models.Model):
    pais = models.CharField('Pais', max_length=30, null=False, blank=False)
    grupo_economico = models.CharField('Grupo_Economico', max_length=30, null=False, blank=False)
    empresa = models.CharField('Empresa', max_length=30, null=False, blank=False)
    sucursal = models.CharField('Sucursal', max_length=30, null=False, blank=False)
    almacenado = models.CharField('Almacenado', max_length=30, null=False, blank=False)
    id_rubro = models.FloatField('id_rubro', null=False, blank=False, default=0, validators=[MinValueValidator(0), MaxValueValidator(99999)], unique=True)
    descuento_maximo = models.CharField = models.CharField('Descuento_Maximo', max_length=20, null=False, blank=False)
    descuento_directo = models.CharField('Descuento_Directo', max_length=20, null=False, blank=False)
    unidad_minima_venta = models.DecimalField('Unidad_Minima_Venta', max_digits=15, decimal_places=4, null=False, blank=False)
    cantidad_unidades_unidad_venta = models.DecimalField('Cant_U_UV', max_length=30, null=False, blank=False)
    unidad_venta = models.CharField('Unidad_Venta', max_length=30, null=False, blank=False)
    descripcion_articulo = models.CharField('Descripcion_Articulo', max_length=100, null=False, blank=False)
    codigo_articulo = models.CharField('Codigo_articulo', max_length=30, null=False, blank=False)
    codigo_busqueda = models.CharField('Codigo_busqueda', max_length=30, null=False, blank=False)
    id_divisiona = models.CharField('id_divisiona', max_length=20, null=False, blank=False)
    id_segmento = models.CharField('id_segmento', max_length=20, null=False, blank=False)
    id_subrublo = models.CharField('id_subrublo', max_length=20, null=False, blank=False)
    id_linea = models.CharField('Pais', max_length=20, null=False, blank=False)
    tipo_item = models.PositiveIntegerField('tipo_item', null=False, blank=False, default=0, validators=[MinValueValidator(0), MaxValueValidator(99999)])
    combo_calcula_stock = models.CharField('combo_calcula_stock', max_length=30, null=False, blank=False)
    vc_fechahora_ultima_modificacion = models.DateTimeField('vc_fechahora_ultima_modificacion', null=False, blank=False)
    status = models.PositiveIntegerField('Status', null=False, blank=False, default=0, validators=[MinValueValidator(0), MaxValueValidator(99999)])
    activo = models.CharField('Activo', max_length=1, null=False, blank=False)
    fechahora_ultima_modificacion = models.DateTimeField('Pais', null=False, blank=False)

Затем я запускаю python3 manage.py makemigrations для создания моей базы данных, но он выдает мне эту ошибку:

(VENV) byakenda@byakenda-G5-5587:~/Documents/somewhere/trucksys$ python3 manage.py makemigrations
Traceback (most recent call last):
  File "/home/somewhere/trucksys/manage.py", line 22, in <module>
    main()
  File "/home/somewhere/trucksys/manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/home/somewhere/VENV/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "/home/somewhere/VENV/lib/python3.10/site-packages/django/core/management/__init__.py", line 420, in execute
    django.setup()
  File "/home/somewhere/VENV/lib/python3.10/site-packages/django/__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/somewhere/VENV/lib/python3.10/site-packages/django/apps/registry.py", line 116, in populate
    app_config.import_models()
  File "/home/somewhere/VENV/lib/python3.10/site-packages/django/apps/config.py", line 304, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/home/somewhere/trucksys/truck/models.py", line 7, in <module>
    class I_Articulos(models.Model):
  File "/home/somewhere/trucksys/truck/models.py", line 15, in I_Articulos
    descuento_directo = models.CharField('Descuento_Directo', max_length=20, null=False, blank=False)
TypeError: 'CharField' object is not callable

Что нужно сделать, чтобы решить эту проблему? С чем это связано? Я младший разработчик Python, поэтому было бы полезно, если бы некоторые из вас с некоторым опытом или даже опытные могли бы помочь мне разобраться с этим.

Виновником является следующая строка:

descuento_maximo = models.CharField = models.CharField('Descuento_Maximo', max_length=20, null=False, blank=False)
Здесь

вы присваиваете новое значение models.CharField, такое, что это уже не ссылка на CharField класс, а ссылка на CharField объект. Вы должны удалить часть = models.CharField, так:

descuento_maximo = models.CharField('Descuento_Maximo', max_length=20, null=False, blank=False)

Однако нет необходимости указывать null=False и blank=False, это происходит по умолчанию.

class IArticulos(models.Model):
    pais = models.CharField('Pais', max_length=30)
    grupo_economico = models.CharField('Grupo_Economico', max_length=30)
    empresa = models.CharField('Empresa', max_length=30)
    sucursal = models.CharField('Sucursal', max_length=30)
    almacenado = models.CharField('Almacenado', max_length=30)
    id_rubro = models.FloatField('id_rubro', default=0, validators=[MinValueValidator(0), MaxValueValidator(99999)], unique=True)
    descuento_maximo = models.CharField('Descuento_Maximo', max_length=20)
    descuento_directo = models.CharField('Descuento_Directo', max_length=20)
    unidad_minima_venta = models.DecimalField('Unidad_Minima_Venta', max_digits=15, decimal_places=4)
    cantidad_unidades_unidad_venta = models.DecimalField('Cant_U_UV', max_length=30)
    unidad_venta = models.CharField('Unidad_Venta', max_length=30)
    descripcion_articulo = models.CharField('Descripcion_Articulo', max_length=100)
    codigo_articulo = models.CharField('Codigo_articulo', max_length=30)
    codigo_busqueda = models.CharField('Codigo_busqueda', max_length=30)
    id_divisiona = models.CharField('id_divisiona', max_length=20)
    id_segmento = models.CharField('id_segmento', max_length=20)
    id_subrublo = models.CharField('id_subrublo', max_length=20)
    id_linea = models.CharField('Pais', max_length=20)
    tipo_item = models.PositiveIntegerField('tipo_item', default=0, validators=[MinValueValidator(0), MaxValueValidator(99999)])
    combo_calcula_stock = models.CharField('combo_calcula_stock', max_length=30)
    vc_fechahora_ultima_modificacion = models.DateTimeField('vc_fechahora_ultima_modificacion')
    status = models.PositiveIntegerField('Status', default=0, validators=[MinValueValidator(0), MaxValueValidator(99999)])
    activo = models.CharField('Activo', max_length=1)
    fechahora_ultima_modificacion = models.DateTimeField('Pais')

Примечание: Модели в Django пишутся в PascalCase, а не snake_case, поэтому вы можете переименовать модель из I_Articulos в IArticulos.

проверьте 7-е поле модели, 'models.CharField =' я предполагаю, что это опечатка?

descuento_maximo = models.CharField = models.CharField('Descuento_Maximo', max_length=20, null=False, blank=False)
Вернуться на верх