x = MyModel.objects.get(id=3)
x.some_field = "new value"
x.save()
The difference between all() and get() is that all() will do a lazy
evaluation and get() will hit the physical database.
Fei
On Oct 12, 11:57 pm, Tom Evans <tevans...@googlemail.com> wrote:
> On Fri, Oct 7, 2011 at 10:01 PM, Chris Seberino <cseber...@gmail.com> wrote:
>
> > On Oct 7, 10:39 am, Jacob Kaplan-Moss <ja...@jacobian.org> wrote:
> >> On Fri, Oct 7, 2011 at 10:30 AM, Chris Seberino <cseber...@gmail.com> wrote:
>
> >> > I've noticed that this doesn't often work in Django shell...
>
> >> > x = MyModel.objects.all()
> >> > x[3].some_field = "new value"
> >> > x[3].save()
>
> >> This is because `MyModel.objects.all()` isn't a list; it's a QuerySet.
> >> That is, `MyModel.objects.all()` *doesn't* hit the database until you
> >> say `x[3]`, at which point Django performs a query with a LIMIT and
>
> > OK. I understand. What is easiest way then to *force* my x[3] code
> > above to hit the database so that
> > my changes are permanent?
>
> x = list(MyModel.objects.all())
> x[3].some_field = "new value"
> x[3].save()
>
> Cheers
>
> Tom
--
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 django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment