2014-04-02 25 views
0
class Customer(models.Model): 
    first_name = models.CharField(max_length=30) 
    last_name = models.CharField(max_length=30) 
    email = models.EmailField(blank=True) 
    address = models.TextField() 
    city = models.CharField(max_length=25, blank=True) 
    state = models.CharField(max_length=3, choices=STATE_CHOICES, blank=True) 
    pincode = models.CharField(max_length=8, blank=True) 
    district = models.CharField(max_length=25, blank=True) 
    class Meta: 
     unique_together = ('first_name', 'last_name',) 
    def save(self, *args, **kwargs): 
     slug = slugify(self.first_name + ' ' + self.last_name) 
     super(Customer, self).save(*args, **kwargs) 

我有一個before insert or update trigger數據庫上規範first_name,last_name,即第一個字母大寫,其餘爲小寫。 由於觸發器的原因,模型上的保存功能在unique_together上引發完整性錯誤。 假設我們有數據庫中的Django唯一在一起和觸發器

first_name : 'Abcd' 
last_name : 'Defg' 

,如果我在管理中添加新記錄與

first_name : 'abcd' 
second_name: 'defg' 

則表明Django管理抓住了錯誤。 有關如何處理此問題的任何建議。

+0

Django的執行INSERT之前檢查的唯一性。我想你必須添加驗證來檢查不區分大小寫的值。 –

回答

0

你應該這樣做:

def save(self, *args, **kwargs): 
    self.first_name = self.first_name.title() 
    self.last_name = self.last_name.title() 
    slug = slugify(self.first_name + ' ' + self.last_name) 
    super(Customer, self).save(*args, **kwargs)