現在、ユーザーが自分のプロファイル(django-profiles)を編集できるフォームがあります。ユーザーがカナダと米国のどちらを選択したかによって、州と県のスイッチを配置したことを除いて、フォームはうまく機能しています。
私のモデルでは、州と県の両方が設定されているため、テーブルには2つの別々のフィールドがあります。
私のsaveメソッドには、次のものがあります。
def user_created(sender, user, request, **kwargs):
form = RegistrationFormZ(request.POST)
....stuff here.....
if form.data["country"] == 'US':
data.state = form.data["state"]
data.provinces = None
if form.data["country"] == 'CA':
data.provinces = form.data["provinces"]
data.state = None
....stuff here....
data.save()
user.first_name = form.data['first_name']
user.last_name = form.data['last_name']
user.save()
from registration.signals import user_registered
user_registered.connect(user_created)
ifステートメントは、保存時に期待したとおりに機能しません。
何が起こっているのかというと、選択されたオプション(州/県)の値は正しく保存されますが、反対側のオプションを空の値に更新できません。
たとえば、カナダの住所を持つユーザーがいて、それを米国の住所に更新したとします。米国の州は適切に保存されますが、州はNoneに更新されません。