Django模型避免重复

Hul*_*ulk 7 python django django-templates django-models django-views

在模型中:

class Getdata(models.Model):
    title = models.CharField(max_length=255)
    state = models.CharField(max_length=2, choices=STATE, default="0")
    name = models.ForeignKey(School)
    created_by = models.ForeignKey(profile)

    def __unicode__(self):
        return self.id()
Run Code Online (Sandbox Code Playgroud)

在模板中:

<form>
    <input type="submit" value="save the data" />
</form> 
Run Code Online (Sandbox Code Playgroud)

如果用户单击保存按钮并且上述数据保存在表中,如何避免重复,即如果用户再次单击相同的提交按钮,则不应该有相同值的另一个条目.或者它是否必须在视图中处理?

Mik*_*one 30

如果单个字段需要是唯一的,那么您只需添加unique=True:

class Getdata(models.Model):
    title = models.CharField(max_length=255, unique=True)
    state = models.CharField(max_length=2, choices=STATE, default="0")
    name = models.ForeignKey(School)
    created_by = models.ForeignKey(profile)
Run Code Online (Sandbox Code Playgroud)

如果您希望字段组合是唯一的,则需要unique_together:

class Getdata(models.Model):
    title = models.CharField(max_length=255)
    state = models.CharField(max_length=2, choices=STATE, default="0")
    name = models.ForeignKey(School)
    created_by = models.ForeignKey(profile)
    class Meta:
        unique_together = ["title", "state", "name"]
Run Code Online (Sandbox Code Playgroud)