1

こんにちは、新しい User オブジェクトが作成されたときに user_profile オブジェクトを保存するポスト保存シグナルがあります。

from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    ...

    def __unicode__(self):
        return self.user.username


def _create_user_profile(sender, instance, created, **kwargs):
    UserProfile.objects.create(user=instance)

post_save.connect(_create_user_profile, sender=User)

ただし、これにより次の問題が発生します。

管理者で新しいユーザーを作成すると、すべて問題ありません。次に編集を試みてからUser権限をスタッフステータスに変更すると、"Duplicate entry '6' for key 'user_id'"エラーが発生します。UserProfileオブジェクトがオブジェクトを再保存しようとしていると思いますか?

この競合を回避するにはどうすればよいですか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

OK、これは大いに役立ちました:

https://sqa.stackexchange.com/questions/1355/what-is-the-correct-way-to-select-an-option-using-seleniums-python-webdriver

基本的に私はを見つける必要が<select>あり、私は直接<option>使用したかった。xpathその後、clickイベントをシミュレートすることができます。

self.browser.find_element_by_xpath(
     "//select[@id='my_select_id']/option[text()='my_option_text']"
).click()

テキスト文字列が不明な場合は、オプションインデックスで選択することもできます。

self.browser.find_element_by_xpath(
    "//select[@id='id_module']/option[2]"
).click()

これが同様の問題を抱えている人に役立つことを願っています。

于 2012-11-07T17:24:27.000 に答える