数回前に尋ねられたDjangoユーザープロファイルの作成でエラーが発生しましたが、他の質問に対する解決策とDjangoドキュメントが推奨する修正が機能していません。
Django管理ページから新しいユーザーオブジェクトを作成するときに作成しようとしているUserProfileモデルがあります(ここで構文を許してください。スタックオーバーフローを使用してからしばらく経ちました)
class UserProfile(models.Model):
user = models.OneToOneField(User)
organization = models.IntegerField(null=True)
phone = models.CharField(max_length=20, null=True, blank=True)
phone_ext = models.CharField(max_length=8, null=True, blank=True)
team_no = models.CharField(max_length=30, null=True, blank=True)
post_save.connect(create_user_profile, sender=User, dispatch_uid="a.unique.string.that.does.not.help.me")
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
UserAdminクラスにユーザープロファイルを追加し、管理サイトエントリの登録を解除/登録しました。
class UserProfileInline(admin.StackedInline):
model = UserProfile
can_delete = False
verbose_name_plural = 'profile'
class UserAdmin(UserAdmin):
inlines = (UserProfileInline, )
actions = [set_organization]
exclude = ('is_staff',)
try:
admin.site.unregister(User)
admin.site.unregister(RegistrationProfile)
admin.site.unregister(Group)
## Re-register UserAdminadmin.site.unregister(User)
finally:
admin.site.register(User, UserAdmin)
admin.site.register(RegistrationProfile, RegistrationAdmin)
admin.site.register(Group, GroupAdmin)
したがって、新しいユーザーを作成しようとするたびに、user_profile_user_idフィールドの重複キーエラーが常に発生します。ログを見ると、ユーザーの保存時に実行されている2つの挿入ステートメントがあります。1つ目は、管理インターフェースのユーザープロファイルフィールドに入力されたすべてのデータが欠落していることです。2つ目はすべてのデータを持っていますが、user_idだけで最初の挿入がすでに行われているため、失敗します。
UserProfileクラスのmodels.pyの重複インポートを探してプロジェクトを数回検索しましたが、何も見つかりませんでした。
誰かがここで何かアイデアを持っていますか?
ありがとうございました。
- アップデート -
Djangoのバージョンは1.3です
imports in the profile/models.py
from django.contrib.auth.models import User
from django.db.models.signals import post_save, pre_save
import logging
django.contribからadmin.pyからインポートしますdjango.contrib.auth.modelsからadminをインポートしますtest.django.registration.modelsからグループをインポートしますtest.django.registration.adminからRegistrationProfileをインポートしますdjango.contrib.auth.adminからRegistrationAdminをインポートしますimport UserAdmin、GroupAdmin from django.contrib.auth.models import User from test.django.extranet.profile.models import UserProfile from test.django.common.models.ajrsonline.ajrsonline_users import AjrsonlineUsers from test.django.common.middleware.ajrs_ldap AJRSOnlineLdapBackendをインポートします