2014-04-02 27 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)