Django模型创建了两次?

时间:2014-05-13 07:33:57

标签: python django

为什么我的属性模型在我的数据库中保存了两次?奇怪的...

这是我的观看代码:

@login_required(login_url='/login/')
@transaction.atomic()
@reversion.create_revision()
def add_item_type(request, id_item, id_item_type):
    item = Item.objects.get(id=id_item)
    item_type = ItemType.objects.get(id=id_item_type)

    item.status = Item.DEPLOYED # Set to phase deployment
    item.save()
    for a in item_type.attribute_types.all(): # Create all attribute skeletons to item
        Attribute.objects.create(name=a.name, description=a.description, type=a.attr_type, item=item)
    ctx = {'item':item, 'item_type':item_type}
    return render_to_response('des/item/add_item_type.html', ctx, context_instance=RequestContext(request))

修改

当我查看我的数据库(postgres)时,我发现我的视图循环被调用了两次(在同一循环中没有保存两次),或者我的视图被调用了两次。我不知道为什么。我很确定这不是循环问题,因为在我的db中,Attribute类是这样保存的。

id - name 
1 - fly 
2 - sit 
3 - run 
4 - fly 
5 - sit 
6 - run

任何想法为什么? 要理解我的代码,请将ItemType视为类,将AttributyType视为ItemType类的属性,Item是ItemType的实例化,Attribute是AttributeType。

1 个答案:

答案 0 :(得分:1)

好的,我通过在Attribute模型(Attribute.name)中指定unique = True值解决了我的问题,因此在同一个Item类中没有相同的Attribute。我所做的是一个“补丁”,但没有解决真正的问题,视图被调用了两次。