2012-03-13 6 views
6

EDIT1:すべてをリセットするためにsqlflushを実行しようとしましたが、それは役に立ちませんでした。IntegrityErrorをUserProfileモデルで修正するにはどうすればよいですか(ユーザーは管理インターフェースから作成したとき)?

EDIT2:私は、ユーザーを作成して、NULLとしてOtherModel指定し、[実際の参照をothermodel作るために、後でユーザーを編集することができています。この問題は、ユーザー作成時に参照を指定するときに発生します。

私のアプリでは、postgresに接続していますが、私はdjangoがUserProfileという新しいモデルを提供するUserモデルを拡張しようとしています。私は、作成した別のモデルに各ユーザーを関連付ける必要があります。だからここに私のコードです:私は、Djangoの管理インタフェースからユーザーを作成すると

. 
. 
. 

class OtherModel(models.Model): 
    # model info 

class UserProfile(models.Model): 
    user = models.OneToOneField(User)  
    othermodel = models.OneToOneField(OtherModel, null=True) 

def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     profile, created = UserProfile.objects.get_or_create(user=instance) 

post_save.connect(create_user_profile, sender=User) 

models.pyは、私は次のエラーを取得する:私が作ってみる

IntegrityError at /admin/auth/user/add/ 
duplicate key value violates unique constraint "planamocal_userprofile_user_id_key" 
DETAIL: Key (user_id)=(23) already exists. 

毎回私の実際のユーザー数が変わらないので、新しいユーザー、user_idカウントは増分し続けます。ここで

はバックトレースです:

Environment: 


Request Method: POST 
Request URL: http://127.0.0.1:8000/admin/auth/user/add/ 

Django Version: 1.3.1 
Python Version: 2.7.1 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'planamocal', 
'django.contrib.admin'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper 
    307.     return self.admin_site.admin_view(view)(*args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 
    93.      response = view_func(request, *args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    79.   response = view_func(request, *args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner 
    197.    return view(request, *args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper 
    28.    return bound_func(*args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 
    93.      response = view_func(request, *args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func 
    24.     return func(self, *args2, **kwargs2) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/transaction.py" in inner 
    217.     res = func(*args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/contrib/auth/admin.py" in add_view 
    103.   return super(UserAdmin, self).add_view(request, form_url, extra_context) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper 
    28.    return bound_func(*args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view 
    93.      response = view_func(request, *args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func 
    24.     return func(self, *args2, **kwargs2) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/transaction.py" in inner 
    217.     res = func(*args, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/contrib/admin/options.py" in add_view 
    885.      self.save_formset(request, form, formset, change=False) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/contrib/admin/options.py" in save_formset 
    677.   formset.save() 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/forms/models.py" in save 
    482.   return self.save_existing_objects(commit) + self.save_new_objects(commit) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/forms/models.py" in save_new_objects 
    613.    self.new_objects.append(self.save_new(form, commit=commit)) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/forms/models.py" in save_new 
    717.    obj.save() 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/models/base.py" in save 
    460.   self.save_base(using=using, force_insert=force_insert, force_update=force_update) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/models/base.py" in save_base 
    553.      result = manager._insert(values, return_id=update_pk, using=using) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/models/manager.py" in _insert 
    195.   return insert_query(self.model, values, **kwargs) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/models/query.py" in insert_query 
    1436.  return query.get_compiler(using=using).execute_sql(return_id) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql 
    791.   cursor = super(SQLInsertCompiler, self).execute_sql(None) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql 
    735.   cursor.execute(sql, params) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/backends/util.py" in execute 
    34.    return self.cursor.execute(sql, params) 
File "/Users/AndyFang/Desktop/planamo/venv/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py" in execute 
    44.    return self.cursor.execute(query, args) 

Exception Type: IntegrityError at /admin/auth/user/add/ 
Exception Value: duplicate key value violates unique constraint "planamocal_userprofile_user_id_key" 
DETAIL: Key (user_id)=(23) already exists. 

このエラーを修正する方法は?

答えて

6

この問題は、ユーザープロファイルを作成して、他のモデルを管理者に同時に追加しようとしているために発生します。

他のモデルはユーザ作成に接続された信号なので、不可能です。あなたは

+0

は私が作成できるようにするための方法はあり、ユーザを作成、ユーザーを保存し、プロファイルを作成し、プロファイルを保存し、他のモデルを追加し、(この順番で)プロファイルを保存することを

変更作業の流れなど管理者インターフェースに人口プロファイルを持つユーザーですか? – fangsterr

関連する問題