`
hanyh
  • 浏览: 235272 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自定义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})

分享到:
评论

相关推荐

    自定义view柱状图

    当数据量较大时,为了提高性能,可以考虑使用`Canvas.save()`和`Canvas.restore()`保存和恢复绘图状态,避免重复计算。另外,可以利用硬件加速和离屏渲染等技术提高绘制效率。 8. **实际项目中的应用**: 给定的...

    android 自定义抽奖转盘

    为了提高性能,可以在`onDraw()`方法中使用`canvas.save()`和`canvas.restore()`来保存和恢复绘图状态,避免不必要的计算。同时,考虑使用`BitmapShader`来优化大面积的颜色填充。 8. **集成到项目中**: 在XML...

    自定义折线图

    可以使用`canvas.save()`和`canvas.restore()`来保存和恢复绘图状态,避免重复绘制;还可以考虑使用`硬件加速`。 9. **动画效果**: - 要使折线图更具吸引力,可以添加动画效果,如平滑的数据加载动画,或者当数据...

    android自定义的边缘凹凸的View

    自定义View时,需要注意性能优化,避免在`onDraw()`中进行复杂的计算或重复绘制。可以使用`canvas.save()`和`canvas.restore()`来保存和恢复绘图状态,以及使用`View.setLayerType()`来开启硬件加速,提升绘制效率。...

    浅谈django 模型类使用save()方法的好处与注意事项

    总结来说,Django模型的`save()`方法提供了在数据持久化前执行自定义逻辑的灵活性,但同时也需要谨慎处理以确保数据的准确性和一致性。在实际项目中,合理利用`save()`方法可以提高代码的可维护性和数据的准确性。

    安卓自定义View绘制饼图

    首先,我们需要创建一个新的View类,继承自View,并重写onDraw()方法,这是自定义绘制的核心所在。 1. **初始化变量**: - 首先,我们需要一些基本的数据结构,如存储每个扇区值的ArrayList,以及计算出的总和,以...

    自定义View的练习---用于周五使用

    为了提高自定义View的性能,可以利用硬件加速(在构造函数中调用`setLayerType(View.LAYER_TYPE_HARDWARE, null)`),减少不必要的重绘,或者使用`Canvas.save()`和`Canvas.restore()`来保存和恢复绘图状态,避免...

    android 自定义textview 模拟走马灯效果

    5. **避免重复绘制**:为了防止在文本完全显示在视图内时仍然进行滚动,可以添加一个标志位来判断文本是否已完全显示。当文本完全显示时,暂停滚动,直到文本离开视图范围后再恢复滚动。 ```java boolean ...

    自定义柱状图

    可以使用`Canvas.save()`和`Canvas.restore()`来保存和恢复画布状态,避免重复绘制相同的背景。另外,`View.setWillNotDraw(false)`可以让系统知道视图需要进行自定义绘制,提高绘制效率。 8. **动画效果**:为了...

    利用django model save方法对未更改的字段依然进行了保存

    注意,`sender`参数用于指定接收信号的模型类,`weak=False`可以确保即使局部函数也不会因垃圾回收而丢失,`dispatch_uid`则用于避免重复注册相同的接收器。 3. **使用Transaction On Save**:如果你需要确保多个...

    自定义SurfaceView实现抽奖转盘

    8. **优化**:为了提高性能,避免不必要的重绘,可以使用`Canvas`的`save()`和`restore()`方法保存和恢复绘图状态,减少重复绘制。此外,尽量减少内存分配和大对象的使用,提升绘制效率。 通过以上步骤,我们可以...

    防止Layui form表单重复提交的实现方法

    在提交表单数据时,提交按钮为 submit 类型,以layui为js框架时,会重复提交表单数据,为防止这一情况,有效的做法是: 在<form>里面,加上 lay-filter=”formConfig” , οnsubmit=”return false” , 其中 ...

    Laravel开发-laravel-custom-insert-model .zip

    - 代码复用:可以在多个地方使用相同的插入逻辑,避免重复编写代码。 - 弹性扩展:随着项目需求变化,可以轻松地修改或添加新的插入逻辑。 总之,自定义Laravel的模型插入操作是一种强大的工具,能够满足复杂业务...

    iOS Xcode自定义代码块及迁移的实现方法

    自定义代码块能够极大地提高开发效率,减少重复性编码工作,节省时间成本。本文将详细介绍如何在Xcode中创建、迁移和编写自定义代码块。 一、代码块的意义 代码块的主要目的是为了快速输入常用或复杂的代码片段,...

    C#上传图片生成缩略图“最佳解决

    `SaveImage`函数可能是一个自定义的方法,用于接收一个完整的图片,然后根据指定的尺寸生成缩略图并保存。它可能会包含以下几个步骤: 1. **读取原始图片**: 使用`Bitmap.FromFile()`或`Image.FromStream()`方法...

    代码走查注意事项

    - 在BO(Business Object)实现类的save、remove等方法中,统一抛出这些自定义异常,并记录异常信息。 8. 事务处理模板: - 使用类似try-catch结构来管理和处理事务,如示例所示,遇到异常时,需在finally块中...

    在keras里实现自定义上采样层

    值得注意的是,如果你使用的是Keras的`save_model`保存模型,并且模型中包含了自定义层,那么在加载模型时需要提供自定义对象。例如: ```python from keras.models import load_model import tensorflow as tf ...

    深入理解Django自定义信号(signals)

    自定义信号虽然提供了灵活性,但过度使用可能会导致应用程序的流程不够清晰,增加维护难度,因此在实际应用中应谨慎使用,并且需要关注Django官方对信号功能的更新,以避免重复造轮子。如果官方提供了新版本,或者...

    java web项目整体异常处理机制.doc

    当我们谈论Java Web项目的整体异常处理机制时,我们关注的是如何优雅地处理可能出现的各种异常,避免将错误信息直接暴露给用户,同时确保系统能够进行必要的错误记录和反馈。 在Spring+Struts2+Hibernate这样的经典...

Global site tag (gtag.js) - Google Analytics