[英]On a django model, how to check uniqueness in the set of values in a ManyToMany field?
例如,如果我有一組這樣的模型,那么如何確保在該模型中只能存在一個具有完全相同的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 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.