django独特的一起和触发器

时间:2014-04-02 07:29:21

标签: django triggers django-admin

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,即第一个字母大写,休息为小写。 由于触发器,模型上的save函数会在unique_together上抛出完整性错误。 假设我们有

first_name : 'Abcd'
last_name : 'Defg'

在数据库中。

如果我在管理员中添加

的新记录
first_name : 'abcd'
second_name: 'defg'

然后django admin没有捕获到错误。 关于如何处理这个的任何建议。

1 个答案:

答案 0 :(得分: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)