首页 > 解决方案 > 如何在Django中与对象属性的多对多关系强制唯一性?

问题描述

假设我有以下模型:

from django.db import models as db

class Item(db.Model):
    containers = db.ManyToManyField(Container)
    name = db.CharField(max_length=100)

class Container(db.Model):
    name = db.CharField(max_length=100)

我相信有一个自动约束,即 Item 和 Container 只能关联一次。从Django 文档开始

如果您不希望同一实例之间存在多个关联,请添加包含 from 和 to 字段的 UniqueConstraint。Django 自动生成的多对多表包含这样的约束。

但是,我还想要一个约束,即同名的两个项目不能在同一个容器中。

我该如何执行?也许在模型级别是不可能的?或者可能是直通模型上的预保存信号?

标签: djangodjango-models

解决方案


推荐阅读