[英]Django model field name “check” raises SystemCheckError
The Django docs state there are only two restrictions on model field names Django文档指出,模型字段名称只有两个限制
However, given the following example, it doesn't look like I can use the field name check
as a ForeignKey. 但是,给出以下示例,看起来我不能将字段名称
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='+')
Here's the error: 这是错误:
$ 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>
Are the docs wrong, or am I doing something wrong? 文档是否错误,或者我做错了什么?
Edit: forgot to mention this project is using Python 2 and Django 1.11 编辑:忘记提及此项目正在使用Python 2和Django 1.11
I found System check framework in django docs ( https://docs.djangoproject.com/en/2.2/ref/checks/#system-check-framework ) 我在Django文档( https://docs.djangoproject.com/en/2.2/ref/checks/#system-check-framework )中找到了系统检查框架
Your check field called during django's system checks so raised SystemCheckError. 在django的系统检查期间调用的检查字段将引发SystemCheckError。
It occurred in django's Basecommand
( https://github.com/django/django/blob/1e87c9fe71703fab23039aa63fafe4f6aac98bbc/django/core/management/base.py#L148 ) 它发生在django的
Basecommand
( 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``.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.