簡體   English   中英

在Django模型上,如何在ManyToMany字段中檢查值集中的唯一性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM