This is an older topic, but for everyone who found this discusion and had
the same issue: The problem is most likely using "lambda" inside a
for-loop. If you switch out "lambda" for "functools.partial" it should work
as expected.
Jani Tiainen schrieb am Donnerstag, 27. April 2017 um 08:27:11 UTC+2:
> Hi,
>
> I think your problem is to use POST['_models_changed']. Django uses
> specialized version of dictionary there which return _last_ value from
> list. You need to use special "get_list()" method to get whole list of
> objects.
> Your code should start working if you do
> data['_models_changed'].get_list() in a for-loop.
>
> Also, why you modify request.POST instead of adding class attribute?
>
>
> On 24.04.2017 14:37, Emilio Jimenez Canalejo wrote:
>
> Hi, I've been looking for some time around the internet a problem I have,
> maybe I'm just dull from all the searching and the answer is pretty
> obvious, but I can't find it.
>
> For example, I have code like this:
> @app.task
> def foo(idx):
> print("This is iteration {}".format(idx))
>
> def save_model(self, request, obj, form, change):
> data = request.POST
> result = super(Model, self).save_model(request, obj, form, change)
>
> for pk in data['_models_changed']:
> transaction.on_commit(lambda: foo(pk))
>
> To my astonishment, I thought I would get:
> "This is iteration 1"
> "This is iteration 2"
> "This is iteration 3"
> "This is iteration 4"
>
> But I got:
> "This is iteration 4"
> "This is iteration 4"
> "This is iteration 4"
> "This is iteration 4"
>
> I'm using python 2.7, Django 1.10.5 and Celery 4.0.2.
>
> 'models_changed' is a field in the post added by a custom clean method.
>
> Anyone knows a way to do this?
>
> Thanks for all!
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/91e87fb4-69e2-4b4e-bd6b-704eb7567026%40googlegroups.com
>
> <https://groups.google.com/d/msgid/django-users/91e87fb4-69e2-4b4e-bd6b-704eb7567026%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> Jani Tiainen
>
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/2cfba61c-e78a-45c5-87b7-e0cbbdc09165n%40googlegroups.com.