class CategoryNameRepeated(Exception):
pass
class 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.name
def 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})
自定义save方法避免名字重复
最新推荐文章于 2020-09-21 19:37:37 发布