On Sep 10, 1:55 pm, "Jonas H." <[email protected]> wrote:
> I started hacking the loaddata command to make use of the shiny new
> `bulk_create` code -- however, it seems that fixture loading (at least
> in its current incarnation) is incompatible to bulk inserts, for this
> reasons:
>
> 1. It's possible to have model objects overridden by fixtures.
>     e.g. in modeltests/fixtures/fixtures/fixture1.json, there's a
>     `fixtures.article` with pk=3, and in fixture2.json there's another
>     pk=3 article which overrides that from fixture1.
>
>     Of course this is not compatible with forced inserts.
>
> 2. pre_save/post_save signals are not sent.
>     It seems like it's not documented anywhere that signals are sent
>     during fixture loading but I think that for backwards compatibility
>     reasons this behaviour should not be changed.
>
> Any ideas on these issues?

Why the signals aren't sent in bulk_insert, is it because PK is not
necessarily  available for post_save signal? Otherwise one could send
all pre_save signals in one batch before insert and for post_save just
after. Cascading deletes do something like that IIRC. If this is
impossible to do in bulk_insert, the signal sending could still be
done manually in fixture loading. PK should be available there
directly from the fixtures, right?

For the overridden pk problem you could do batches of say 100 inserts
at a time, first do "select pk from tbl where pk in (list of pks in
batch)", then use update for the returned pks and insert the rest.

 - Anssi

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to