Hi Yunti,
Am 05.11.2015 um 18:19 schrieb Yunti:
I have tried to use the update_or_create() method assuming that it would
either, create
a new entry in the db if it found none or update an existing one if it found
one and had
differences to the defaults passed in - or wouldn't update if there was no
difference.
A note about the last statement: If a Supplier object has the same unique_id, and all
other fields (in `defaults`) are the same as well, logically there is no difference
between updating and not updating – the result is the same.
However it just seemed to recreate entries each time even if there were no
changes.
Have you checked? How?
In your create_or_update_if_diff() you seem to try to re-invent update_or_create(), but
have you actually examined the results of the
supplier, created = Supplier.objects.update_or_create(...)
call?
I think the issue was that I wanted to:
1) get an entry if all fields were the same,
update_or_create() updates an object with the given kwargs, the match is not made
against *all* fields (i.e. for the match the fields in `defaults` are not accounted for).
2) or create a new entry if it didn't find an existing entry with the unique_id
3) or if there was an entry with the same unique_id, update that entry with
remaining
fields.
update_or_create() should achieve this. It's hard to tell more without additional
information, but
https://docs.djangoproject.com/en/1.8/ref/models/querysets/#update-or-create explains
the function well, including how it works. If you work through this in small steps,
check examples and their (intermediate) results, you should be able to find what the
original problem was.
Best regards,
Carsten
--
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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/563BB657.7050209%40cafu.de.
For more options, visit https://groups.google.com/d/optout.