我有一个模型(MyModel
),它可以有多个User
作为所有者(多个关系)。每个User
可以拥有多个MyModel
实例
其思想是用户可以通过API创建MyModel
实例。但是我想设置一个约束,即用户创建的MyModel
实例必须在用户拥有的MyModel
内具有唯一的名称。但它在整个数据库中可能是非唯一的
我试图通过在多个字段中显式地将MyModelOwner
定义为through
模型来实现这一点,但我对如何处理UniqueConstraint
感到困惑
class MyModel(models.Model):
id = models.UUIDField(primary_key=True, editable=False, default=uuid.uuid4)
name = models.CharField(
max_length=1000,
unique=True,
)
owner = models.ManyToManyField(
User,
related_name='+',
through='MyModelOwner'
)
class MyModelOwner(models.Model):
my_model = models.ForeignKey(MyModel, on_delete=models.PROTECT)
owner = models.ForeignKey(User, on_delete=models.PROTECT)
class Meta:
constraints = [
UniqueConstraint(
fields=['owner', 'my_model'],
name='unique_my_model_owner'),
]
目前没有回答
相关问题 更多 >
编程相关推荐