В документации Django есть только два ограничения на имена полей модели
Однако, учитывая следующий пример, не похоже, что я могу использовать check
имени поля в качестве ForeignKey.
class Check(models.Model):
name = models.CharField(max_length=100)
class MyModel(models.Model):
# this works fine
#check = models.BooleanField()
# this breaks
check = models.ForeignKey(Check, on_delete=models.PROTECT, related_name='+')
Здесь ошибка:
$ python manage.py check
SystemCheckError: System check identified some issues:
ERRORS:
myapp.MyModel: (models.E020) The 'MyModel.check()' class method is currently overridden by <django.db.models.fields.related_descriptors.ForwardManyToOneDescriptor object at 0x03A818D0>
Документы не правы, или я делаю что-то не так?
Редактировать: забыл упомянуть, что этот проект использует Python 2 и Django 1.11
Я нашел систему проверки системы в django docs (https://docs.djangoproject.com/en/2.2/ref/checks/#system-check-framework)
Ваше поле проверки, вызываемое во время системных проверок django, вызвало SystemCheckError.
Это произошло в Basecommand
django (https://github.com/django/django/blob/1e87c9fe71703fab23039aa63fafe4f6aac98bbc/django/core/management/base.py#L148)
1. ''django-admin'' or ''manage.py'' loads the command class
and calls its ''run_from_argv()'' method.
2. The ''run_from_argv()'' method calls ''create_parser()'' to get
an ''ArgumentParser'' for the arguments, parses them, performs
any environment changes requested by options like
''pythonpath'', and then calls the ''execute()'' method,
passing the parsed arguments.
3. The ''execute()'' method attempts to carry out the command by
calling the ''handle()'' method with the parsed arguments; any
output produced by ''handle()'' will be printed to standard
output and, if the command is intended to produce a block of
SQL statements, will be wrapped in ''BEGIN'' and ''COMMIT''.
4. If ''handle()'' or ''execute()'' raised any exception (e.g.
''CommandError''), ''run_from_argv()'' will instead print an error
message to ''stderr''.
from_db
и он работает! Wierd