2

ユーザー プロファイル クラスは次のようになります。

class UserProfile(models.Model):

    user = models.OneToOneField(User)
    email_my_machines = models.BooleanField(default=True)
    email_others_machines = models.BooleanField(default=True)

    class Meta(object):
        verbose_name_plural = "Profile"

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

post_save.connect(create_user_profile, sender=User)

"AUTH_PROFILE_MODULE = 'generic.UserProfile'"settings.py に追加

そのすべてが期待どおりに機能しています。

Django Admin では、ユーザーの追加に関連する 2 つのフォームがあります。最初のフォームには、「ユーザー名」、「パスワード」、「パスワード確認」などの最小限のフィールドと、「ユーザー プロファイル」クラスで提供されるフィールドがあります。このフォームの「ユーザー プロファイル」フィールドを変更すると、アプリがクラッシュし、「(1062、キー 'user_id' のエントリ '34' が重複しています」)」というエラーが表示されます。これは完全性エラーです。

私はDjangoが初めてです。助けてもらえますか?

4

1 に答える 1

2

私がこれを見たのは、同じ信号が 2 回発射されたときだけです。信号接続にa を追加してみてくださいdispatch_uid。修正されるはずです。

post_save.connect(create_user_profile, sender=User, dispatch_uid='create_profile_user')

参照: https://docs.djangoproject.com/en/dev/topics/signals/#preventing-duplicate-signals

于 2013-01-11T16:57:56.033 に答える