![](/img/trans.png)
[英]Django DM model constraint: uniqueConstraint or checkConstraint?
[英]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.