hanyh 发表于 2013-2-7 15:20:09

自定义save方法避免名字重复

class CategoryNameRepeated(Exception):    passclass Category(models.Model):    name = models.CharField(max_length=128)    parent = models.ForeignKey('self', blank=True, null=True, related_name='child_set')      def save(self):      if not self.parent:            if Category.objects.get(name=self.name):                raise CategoryNameRepeated      super(Category, self).save()    def __unicode__(self):      return self.namedef add_category(request):    if request.method == "POST":      form = CategoryForm(data=request.POST)      if form.is_valid():            try:                obj = form.save()                        return HttpResponseRedirect(reverse('tribe.views.view_category', kwargs={'id':obj.id}))            except CategoryNameRepeated:                msg = _("category name repeated")                return render_to_response('tribe/category_edit.html', {'form': form,'msg':msg})            else:            return render_to_response('tribe/category_edit.html', {'form': form})    else:      form = CategoryForm()    return render_to_response('tribe/category_edit.html', {'form': form})
页: [1]
查看完整版本: 自定义save方法避免名字重复