0

ねえ、私はdjangoユーザーが作成されたときにシグナルを受け取り、そのユーザーをphpbbテーブルにも手動で挿入します。コードは次のとおりです。

@receiver(post_save, sender=User)
def user_created_signal(sender, **kwargs):
    if kwargs['created']:
        user = kwargs['instance']

        fields = {
            'username': str(user.username),
            'username_clean': str(user.username),
            'user_password': "",
            'user_email': str(user.email),
            'group_id': 7,
            'user_timezone': 0,
            'user_dst': "",
            'user_lang': "sv",
            'user_type': 0,
            'user_actkey': "",
            'user_ip': "",
            'user_regdate': "",
            'user_inactive_reason': "",
            'user_inactive_time': "",
            'user_permissions': 0,
            'user_sig': "",
            'user_form_salt': "gg54jhg345",
        }
        cursor = connection.cursor()

        # Add user to phpbb

        try:

            cursor.execute("INSERT INTO spelutveckla_se.phpbb_users " + str(tuple(fields.keys())).replace("'", "") + " VALUES" + str(tuple(fields.values())))

        except Warning:
            pass

このエラーメッセージが表示され続けます:(1062、"キー'username_clean'のエントリ'test_username'が重複しています")

phpbb_userテーブルで、ユーザーが作成されたことがわかります。しかし、ユーザーを削除して再試行すると、同じエラーが表示されます。私もさまざまなユーザー名で試しました。コードが複数回実行されているようですが、ブレークポイント/発生した例外をfinsに配置しようとしましたが、コードが複数回実行されている兆候が見つかりません...

SQLは次のとおりです。

"INSERT INTO spelutveckla_se.phpbb_users(username、user_timezone、user_form_salt、username_clean、user_dst、user_lang、user_password、user_sig、user_type、user_actkey、user_ip、user_permissions、user_regdate、group_id、user_inactive_reason、user_email、 gg54jhg345'、' test_username'、''、' sv'、''、''、0、''、''、0、''、7、''、'test@gmail.com'、'')

助けてください!!ありがとうございました。

4

1 に答える 1

2

同様の問題があったと思います。__init.py__別のファイルに信号を追加するコードを移動しました。例:アプリ内から__init__ 、ルートプロジェクトフォルダー内の初期化ファイルに(またはその逆に)。多分これは役立つでしょう。

于 2011-02-13T21:31:59.600 に答える