0

数回前に尋ねられた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をインポートします

4

1 に答える 1

0

最初のものが制限されるようにifステートメントを使用します。たとえば、次のようになります。

 if instance.field_name:
     //save data here

     //In here you can save the value that has complete data
于 2013-02-25T02:56:46.417 に答える