On Tue, 2008-10-21 at 22:30 -0700, guruyaya wrote: [...] > blog/views.py > ----------- > from django.shortcuts import render_to_response as RenderToResponse > from myblog.blog.models import Post > def listposts(request): > a = Post.objects.all() > a[0].title = 'hihi' > a[0].content = 'haha' > print a[0].title > print a[0].content > return RenderToResponse('blog/showlist.html',{'postlist': a});
[...] > As you may have guest, I expected the first post title to be 'hihi' > and it's content to be 'haha'. Well... it's not. I still get the same > post I have in my database. Yet the "print" lines give me the right > post content in the server debug messages. That's because a[0] is not updating 'a' in place. Instead, it's returning a new queryset, that contains a slice of the original one and then that clone is updated. You are still passing the original 'a' to the template, however. If you want to do updating in place, you'll need to convert 'a' to an object that supports those types of updates, namely a list: a = list(a) a[0].title = 'Now updated in place because a is a list!' Realise that this isn't the sort of thing that is normally going to be a problem because it's just not that normal a usage pattern. Typically, you will either be extracting a bunch of data in a queryset and passing that to a template, *or* you will be iterating through a queryset or getting one particular object, updating the object(s) and then saving them. Not mixing both at once. Regards, Malcolm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---