코드에서 모든 기능을 업그레이드 한 이후 신호가 전혀 작동하지 않는 상태로 남아 있기 때문에 아래 코드는 장고 1.4에서 완벽하게 작동했습니다.django social auth pre_update 신호가 장고 1.5로 업그레이드 할 때 해고되지 않습니다.
이전에는 1.4에 있었을 때 사용자 정보를 유지하기 위해 사용자 프로필을 사용하고 있었지만 업그레이드 할 때 하나의 테이블에 모든 세부 정보가 포함 된 사용자 지정 사용자 모델을 사용했습니다. 나는 사회적 인증을 테스트 할 때이 모든 것이 잘 작동하므로이 부분에 동의하기 때문에 관련성이 있다고 생각하지 않습니다.
def twitter_extra_values(sender, user, response, details, **kwargs):
"""
accounts - twitter_extra_values - signal
"""
try:
TwitterExtra.objects.get_or_create(
user = user,
screen_name = response.get('screen_name')
)
except IntegrityError:
TwitterExtra.objects.get(
user = user,
screen_name = response.get('screen_name')
).delete()
# recursively attempt to recreate the record
twitter_extra_values(sender, user, response, details, **kwargs)
return True
pre_update.connect(twitter_extra_values, sender=TwitterBackend, dispatch_uid="accounts.twitter_extra_values")
이 그냥 추측하지만 보낸 사람 매개 변수를 사용하여 유사한 문제가 발생 하였다
여기에 파이프 라인 단계를 사용하여 페이스 북의 아바타를 설정하는 예입니다. 매개 변수를 제거하자마자 다시 작동하기 시작했습니다. 여전히 시그널의 송신자를 제어 할 필요가 있다면'issubclass (sender, Document)'를 시도해야한다. 또한, 단지 하나의 dispatch_uid와'import uuid'가 있는지 확인하고 마지막 매개 변수로'dispatch_uid = str (uuid.uuid1())'을 보내고 싶을 수도 있습니다. –