用户的唯一数据库条目[重复]
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】:使用模型Meta
类unique_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 的重复条目?