Changes between Initial Version and Version 2 of Ticket #10721


Ignore:
Timestamp:
Apr 3, 2009, 10:30:33 AM (15 years ago)
Author:
Karen Tracey
Comment:

Reformatted description -- please use preview to ensure your tickets are readable before submitting them.

Actually the Itensvar[0].save() will issue a database update, the problem is it will call save() on an newly-retrieved-from-the-database object, not the one you retrieved and change the desc on in the previous line. There is no caching done when you access a queryset by indexing like this. If you look at the doc here: http://docs.djangoproject.com/en/dev/topics/db/queries/#limiting-querysets and replace the indexing notation with what its rough equivalent is:

Itensvar[0:1].get().desc = 'Test'
Itensvar[0:1].get().save()

you can see the problem. The 2nd line isn't operating on the same object as the first one changed, it's calling save() on a new copy retrieved from the database. You need to write this as:

x = Itensvar[0]
x.desc = 'Test'
x.save()

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #10721

    • Property Resolutioninvalid
    • Property Status newclosed
  • Ticket #10721 – Description

    initial v2  
    11Django not update field when I use arrays[] for select object:
    22
     3{{{
    34Itensvar = Itens.objects.all()
    45Itensvar[0].desc = 'Test'
     
    67
    78#django not execute update in database
    8 
     9}}}
Back to Top