2015-05-24 50 views
0

我有一個模型需要一個listname。我只希望列表名稱禁用每個用戶的重複。目前,用戶不能輸入「配方」兩次,但如果其他用戶沒有「配方」列表名稱,則由於該字段是唯一的,所以無法輸入。是否有可能使列表名僅對當前登錄的用戶唯一?給用戶的唯一數據庫條目

模型

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 
+0

「當前登錄用戶唯一」或「每個用戶唯一」? – Wtower

回答

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() 
+0

太棒了!有沒有辦法呈現重複的表單錯誤,而不是Django的錯誤頁面? – ryan

+0

立即檢查出來 –