用户的唯一数据库条目[重复]

Posted

技术标签:

【中文标题】用户的唯一数据库条目[重复]【英文标题】:Unique DB entry to the user [duplicate] 【发布时间】:2015-08-05 19:15:09 【问题描述】:

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

型号

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】:

使用模型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()

【讨论】:

太棒了!有没有办法为重复项而不是 django 错误页面呈现表单错误?

以上是关于用户的唯一数据库条目[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何避免没有主键和唯一键的重复条目?

消除链接到查询结果的重复表单条目

如何在 MS Access 2003 中删除具有唯一 ID 的重复条目?

如果在服务器端生成唯一 ID,应用程序如何防止数据库中的重复条目

MySQL - 忽略插入错误:重复条目

获取哈希中唯一条目的值[重复]