繁体   English   中英

Django:模型 UniqueConstraint 在迁移时出错

[英]Django: Model UniqueConstraint gives an error when migrating

在我的 Django 项目中,我需要使用两个 UniqueConstraint 实例的模型之一。 但是当我添加它并在运行 makemigrations 后进行迁移时,它会在终端中出现错误。

模型类:

class MyDays(models.Model):
    class Meta:
        verbose_name = "My Day"
        verbose_name_plural = "My Days"
        constraints = [
            models.UniqueConstraint(fields=['userid', 'date', 'from'], condition=Q(status=1), name='user_date_from_a'),
            models.UniqueConstraint(fields=['userid', 'date', 'to'], condition=Q(status=1), name='user_date_to_b')
        ]

    id = models.BigAutoField(primary_key=True)
    userid = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="User")
    date = models.DateField(auto_now_add=False, editable=True, validators=[validate_date])
    from = models.TimeField(auto_now_add=False, editable=True)
    to = models.TimeField(auto_now_add=False, editable=True)
    status = models.ForeignKey(Status, on_delete=models.CASCADE, verbose_name="Status", default=1)

当我运行 python3 manage.py migrate 时,它​​给出了以下错误:

django.core.exceptions.FieldError:此查询中不允许加入的字段引用

仅当状态为 1 以及其他 3 个字段组合时,我才需要拥有唯一记录。 我究竟做错了什么? 我该如何解决这个错误?

试试fields=['userid_id'...

看起来UniqueConstraint正在尝试连接到用户表。

Django 使用您的 ForeignKeys 和 OneToOneFields 并在末尾添加_id以创建存储相关对象的主键(通常是整数)的 DB 列。 出于这个原因,您通常不应将“id”放在相关对象名称的末尾。

因此,如果my_days是实例MyDays ,然后my_days.userid是用户实例和my_days.userid_id (通常)的整数。

如果行为与unique_together不同,则可能被视为UniqueConstraint的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM