gpt4 book ai didi

python - 在 django 模型中,如何检查 ManyToMany 字段中的值集的唯一性?

转载 作者:太空宇宙 更新时间:2023-11-03 16:59:07 25 4
gpt4 key购买 nike

例如,如果我有一组这样的模型,我如何确保只有一个具有完全相同的Permission集的Group实例可以存在于型号?

class Permission(models.Model):
name = models.CharField(max_length=100, unique=True)

class Group(models.Model):
name = models.CharField(max_length=100, unique=True)
permissions = models.ManyToManyField(Permission)

class User(models.Model):
name = models.CharField(max_length=100, unique=True)
group = models.ForeignKey(Group)

在 django 中强制执行此约束的最佳方法是什么?我不关心数据库级别的约束。 django 是否在 ManyToMany 模型字段上提供现有标志,或者我需要添加自定义数据验证?如果是,怎么办?

此外,我不使用 ModelForm,因此表单验证不是我想要的。

我的问题是关于整个模型中的ManyToMany字段关系集的唯一性,而不是在单个实例中。

最佳答案

您可以重写 Group 模型的 save 方法,以便在保存 Group 对象之前检查唯一性。

例如:

class Group(models.Model):
...
def save(self, *args, **kwargs):
if insert_your_check_here():
super(Group, self).save(*args, **kwargs) # Call the "real" save() method.
else:
return

有关覆盖预定义模型方法的更多信息,请查看 docs .

关于python - 在 django 模型中,如何检查 ManyToMany 字段中的值集的唯一性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35152426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com