Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:AttributeError:';唯一约束';对象没有属性';字段#u orders';_Python_Django_Django Models - Fatal编程技术网

Python Django:AttributeError:';唯一约束';对象没有属性';字段#u orders';

Python Django:AttributeError:';唯一约束';对象没有属性';字段#u orders';,python,django,django-models,Python,Django,Django Models,我的应用程序中有一个名为“就业”的模型,它引用了两个名为“用户”和“公司”的模型。在数据库的Employments表中,在两个外键上有一个复合索引,防止同一用户在同一公司有两个雇员。我试图使用UniqueConstraint类在Django中表示这个复合索引,但是它抛出了一个错误,我找不到任何文档来说明这个错误 这种型号通常工作得很好。但是,当我将UniqueConstraint添加到模型的索引时,服务器会抛出一个错误。我已经查看了Django的文档,以及Django的其他文档,但是没有发现任何

我的应用程序中有一个名为“就业”的模型,它引用了两个名为“用户”和“公司”的模型。在数据库的Employments表中,在两个外键上有一个复合索引,防止同一用户在同一公司有两个雇员。我试图使用UniqueConstraint类在Django中表示这个复合索引,但是它抛出了一个错误,我找不到任何文档来说明这个错误

这种型号通常工作得很好。但是,当我将UniqueConstraint添加到模型的索引时,服务器会抛出一个错误。我已经查看了Django的文档,以及Django的其他文档,但是没有发现任何关于我收到的错误的提及。我还尝试在UniqueConstraint的fields参数中将“User\u ID”和“Company\u ID”替换为“User”和“Company”,但得到了完全相同的错误

不确定这是否与问题有关,但我正在python:3.6容器中使用Docker运行Django服务器,Django版本为2.2

以下是就业模式:

from django.db import models
from app.models import User, Company

class Employment(models.Model):
    Employment_ID = models.AutoField(primary_key=True)
    user          = models.ForeignKey(User, db_column='User_ID', on_delete=models.CASCADE)
    company       = models.ForeignKey(Company, db_column='Company_ID', on_delete=models.CASCADE)

    class Meta:
        db_table = "Employments"
        indexes = [
            models.UniqueConstraint(fields=['User_ID', 'Company_ID'],
                                    name='Employment_User_Company_UNIQUE') # server works fine without this
        ]
当我启动Django服务器时,我得到以下输出:

Watching for file changes with StatReloader
Performing system checks...

Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/usr/local/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/utils/autoreload.py", line 54, in wrapper
    fn(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 117, in inner_run
    self.check(display_num_errors=True)
  File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 390, in check
    include_deployment_checks=include_deployment_checks,
  File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 377, in _run_checks
    return checks.run_checks(**kwargs)
  File "/usr/local/lib/python3.6/site-packages/django/core/checks/registry.py", line 72, in run_checks
    new_errors = check(app_configs=app_configs)
  File "/usr/local/lib/python3.6/site-packages/django/core/checks/model_checks.py", line 31, in check_all_models
    errors.extend(model.check(**kwargs))
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 1254, in check
    *cls._check_indexes(),
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 1565, in _check_indexes
    fields = [field for index in cls._meta.indexes for field, _ in index.fields_orders]
  File "/usr/local/lib/python3.6/site-packages/django/db/models/base.py", line 1565, in <listcomp>
    fields = [field for index in cls._meta.indexes for field, _ in index.fields_orders]
AttributeError: 'UniqueConstraint' object has no attribute 'fields_orders'
使用StatReloader监视文件更改
正在执行系统检查。。。
线程1中的异常:
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/threading.py”,第916行,在bootstrap\u内部
self.run()
文件“/usr/local/lib/python3.6/threading.py”,第864行,运行中
自我目标(*自我参数,**自我参数)
包装器中的文件“/usr/local/lib/python3.6/site packages/django/utils/autoreload.py”,第54行
fn(*args,**kwargs)
文件“/usr/local/lib/python3.6/site packages/django/core/management/commands/runserver.py”,第117行,在内部运行
self.check(display\u num\u errors=True)
文件“/usr/local/lib/python3.6/site packages/django/core/management/base.py”,第390行,选中
包括部署检查=包括部署检查,
文件“/usr/local/lib/python3.6/site packages/django/core/management/base.py”,第377行,运行检查
返回检查。运行检查(**kwargs)
文件“/usr/local/lib/python3.6/site packages/django/core/checks/registry.py”,第72行,在运行检查中
新建错误=检查(应用程序配置=应用程序配置)
文件“/usr/local/lib/python3.6/site packages/django/core/checks/model_checks.py”,check_all_models第31行
错误。扩展(模型检查(**kwargs))
文件“/usr/local/lib/python3.6/site packages/django/db/models/base.py”,第1254行,选中
*cls.\u检查\u索引(),
文件“/usr/local/lib/python3.6/site packages/django/db/models/base.py”,第1565行,在检查索引中
fields=[cls中索引的字段。\字段的meta.index,\索引的字段\顺序]
文件“/usr/local/lib/python3.6/site packages/django/db/models/base.py”,第1565行,在
fields=[cls中索引的字段。\字段的meta.index,\索引的字段\顺序]
AttributeError:“UniqueConstraint”对象没有属性“fields\u orders”
如果有人遇到过此错误或知道解决方法,我将非常感谢您的见解。

您在
索引
参数中定义了这一点,但这应该在属性中<代码>索引顾名思义,包含表中定义的索引列表<代码>约束另一方面包含应强制执行的约束

class Employment(models.Model):
    Employment_ID = models.AutoField(primary_key=True)
    user = models.ForeignKey(User, db_column='User_ID', on_delete=models.CASCADE)
    company = models.ForeignKey(Company, db_column='Company_ID', on_delete=models.CASCADE)

    class Meta:
        db_table = "Employments"
        constraints = [
            models.UniqueConstraint(
                fields=['User_ID', 'Company_ID'],
                name='Employment_User_Company_UNIQUE'
            )
        ]
班级就业(models.Model):
Employment\u ID=models.AutoField(主键=True)
user=models.ForeignKey(user,db\u column='user\u ID',on\u delete=models.CASCADE)
company=models.ForeignKey(company,db\u column='company\u ID',on\u delete=models.CASCADE)
类元:
db_table=“就业”
约束=[
模型.唯一约束(
字段=['User\u ID','Company\u ID'],
name='Employment\u User\u Company\u UNIQUE'
)
]