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 发布
本文介绍了一个自定义的异常处理机制CategoryNameRepeated,用于解决在保存具有相同名称的分类时出现的问题。通过ForeignKey实现了分类之间的层级关系,并在保存时检查同名分类避免重复。
8575

被折叠的 条评论
为什么被折叠?



