自定義save方法避免名字重複



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})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章