用户的唯一DB条目

时间:2015-05-24 01:12:31

标签: django

我有一个带有列表名称的模型。我只希望列表名称禁用每个用户的重复项。目前,用户不能两次输入“食谱”,但如果另一个用户没有“食谱”列表名称,则他们无法输入,因为该字段是唯一的。是否可以使列表名仅对当前登录的用户唯一?

MODEL

class newlist(models.Model):

    user = models.ForeignKey(User)
    list_name = models.CharField(max_length = 100, unique = True)
    picture = models.ImageField(upload_to='profiles/', default = "/media/profiles/default.jpg")
    slug = AutoSlugField(populate_from='list_name', default = '')

    def __str__(self):
        return self.list_name

1 个答案:

答案 0 :(得分:1)

使用模型Metaunique_together。您可以找到优秀的文档here

class newlist(models.Model):
    class Meta:
        unique_together=('user','list_name')
    user = models.ForeignKey(User)
    list_name = models.CharField(max_length = 100)
    picture = models.ImageField(upload_to='profiles/', default = "/media/profiles/default.jpg")
    slug = AutoSlugField(populate_from='list_name', default = '')

    def __str__(self):
        return self.list_name
    def save(self,*args,**kwargs):
        try:
            return super(newlist,self).save(*args,**kwargs)
        except IntegrityError: # This is raised if the object can't be saved.
            # Your error handling code
            from django.core.exceptions import PermissionDenied
            raise PermissionDenied()