Using Django 1.6.7, in the Admin if I change the name of an object (in
this case "substance") with 1:1 relationships and click [Save as new] I
get an integrity error[1]. This was working in Django 1.5.x.
Before I put in the effort to roll back to 1.5 for proof I thought I'd
check the docs and found this with a "Changed in Django 1.6" note ...
https://docs.djangoproject.com/en/1.6/ref/models/instances/#how-django-knows-to-update-vs-insert
Does anyone have a suggestion?
The interactive traceback indicates my save() method on one of the 1:1
models (in this case "gas") is triggering the problem. See below.
Thanks for any pointers
Mike
- - - - - - - - - - - -
[1] Environment:
Request Method: POST
Request URL: http://localhost:8000/admin/substance/substance/17/
Django Version: 1.6.7
Python Version: 2.7.6
Installed Applications:
(u'django.contrib.auth',
u'django.contrib.contenttypes',
u'django.contrib.sessions',
u'django.contrib.sites',
u'django.contrib.messages',
u'django.contrib.admin',
u'django.contrib.admindocs',
u'django.contrib.staticfiles',
u'common',
u'company',
u'refer',
u'substance',
u'workplace')
Installed Middleware:
(u'django.middleware.cache.UpdateCacheMiddleware',
u'django.contrib.sessions.middleware.SessionMiddleware',
u'django.middleware.locale.LocaleMiddleware',
u'django.middleware.common.CommonMiddleware',
u'django.middleware.transaction.TransactionMiddleware',
u'django.middleware.csrf.CsrfViewMiddleware',
u'django.contrib.auth.middleware.AuthenticationMiddleware',
u'django.contrib.messages.middleware.MessageMiddleware',
u'django.middleware.doc.XViewMiddleware',
u'django.middleware.clickjacking.XFrameOptionsMiddleware',
u'django.middleware.cache.FetchFromCacheMiddleware')
Traceback:
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\core\handlers\base.py"
in get_response
112. response = wrapped_callback(request,
*callback_args, **callback_kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\contrib\admin\options.py"
in wrapper
452. return self.admin_site.admin_view(view)(*args,
**kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\utils\decorators.py" in
_wrapped_view
99. response = view_func(request, *args, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\views\decorators\cache.py"
in _wrapped_view_func
52. response = view_func(request, *args, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\contrib\admin\sites.py"
in inner
198. return view(request, *args, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\utils\decorators.py" in
_wrapper
29. return bound_func(*args, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\utils\decorators.py" in
_wrapped_view
99. response = view_func(request, *args, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\utils\decorators.py" in
bound_func
25. return func(self, *args2, **kwargs2)
File "C:\Users\mike\env\xxdx\lib\site-packages\django\db\transaction.py"
in inner
371. return func(*args, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\contrib\admin\options.py"
in change_view
1224.
current_app=self.admin_site.name))
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\utils\decorators.py" in
_wrapper
29. return bound_func(*args, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\utils\decorators.py" in
_wrapped_view
99. response = view_func(request, *args, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\utils\decorators.py" in
bound_func
25. return func(self, *args2, **kwargs2)
File "C:\Users\mike\env\xxdx\lib\site-packages\django\db\transaction.py"
in inner
371. return func(*args, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\contrib\admin\options.py"
in add_view
1152. self.save_related(request, form, formsets, False)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\contrib\admin\options.py"
in save_related
904. self.save_formset(request, form, formset, change=change)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\contrib\admin\options.py"
in save_formset
892. formset.save()
File "C:\Users\mike\env\xxdx\lib\site-packages\django\forms\models.py"
in save
618. return self.save_existing_objects(commit) +
self.save_new_objects(commit)
File "C:\Users\mike\env\xxdx\lib\site-packages\django\forms\models.py"
in save_new_objects
747. self.new_objects.append(self.save_new(form,
commit=commit))
File "C:\Users\mike\env\xxdx\lib\site-packages\django\forms\models.py"
in save_new
877. obj.save()
File "C:\Users\mike\env\xxdx\ssds\substance\models\gas.py" in save
168. super(Gas, self).save(*args, **kwargs)
#########################################################
# here is the entire save method containing line 168 above
#
159 def save(self, *args, **kwargs):
160 self.get_oxidizing_comment()
161 if not self.n_equivalency:
162 casno = self.cas()
163 if casno:
164 try:
165 self.n_equivalency = N_EQUIVALENCY[casno]
166 except KeyError:
167 pass
168 super(Gas, self).save(*args, **kwargs)
169 if self.ozone:
170 sdsutils.insert_ozone_reg(self)
#
#########################################################
File "C:\Users\mike\env\xxdx\lib\site-packages\django\db\models\base.py"
in save
545. force_update=force_update,
update_fields=update_fields)
File "C:\Users\mike\env\xxdx\lib\site-packages\django\db\models\base.py"
in save_base
573. updated = self._save_table(raw, cls, force_insert,
force_update, using, update_fields)
File "C:\Users\mike\env\xxdx\lib\site-packages\django\db\models\base.py"
in _save_table
654. result = self._do_insert(cls._base_manager, using,
fields, update_pk, raw)
File "C:\Users\mike\env\xxdx\lib\site-packages\django\db\models\base.py"
in _do_insert
687. using=using, raw=raw)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\db\models\manager.py"
in _insert
232. return insert_query(self.model, objs, fields, **kwargs)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\db\models\query.py" in
insert_query
1514. return query.get_compiler(using=using).execute_sql(return_id)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\db\models\sql\compiler.py"
in execute_sql
903. cursor.execute(sql, params)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\db\backends\util.py" in
execute
69. return super(CursorDebugWrapper, self).execute(sql,
params)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\db\backends\util.py" in
execute
53. return self.cursor.execute(sql, params)
File "C:\Users\mike\env\xxdx\lib\site-packages\django\db\utils.py" in
__exit__
99. six.reraise(dj_exc_type, dj_exc_value, traceback)
File
"C:\Users\mike\env\xxdx\lib\site-packages\django\db\backends\util.py" in
execute
53. return self.cursor.execute(sql, params)
Exception Type: IntegrityError at /admin/substance/substance/17/
Exception Value: duplicate key value violates unique constraint
"substance_gas_substance_id_key"
DETAIL: Key (substance_id)=(22) already exists.
--
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/543DA667.7030304%40dewhirst.com.au.
For more options, visit https://groups.google.com/d/optout.