为什么我的属性模型在我的数据库中保存了两次?奇怪的...
这是我的观看代码:
@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。
答案 0 :(得分:1)
好的,我通过在Attribute模型(Attribute.name)中指定unique = True值解决了我的问题,因此在同一个Item类中没有相同的Attribute。我所做的是一个“补丁”,但没有解决真正的问题,视图被调用了两次。