В настоящее время у меня есть форма, которая позволяет пользователю редактировать свой профиль (django-profiles). Форма работает отлично, за исключением того, что я поставил переключатель для штатов и провинций в зависимости от того, не выбирает ли пользователь Канада или США.Django Issue Setting Empty String
В моей модели у меня есть как государство, так и провинция, так что в таблице есть 2 отдельных поля.
В моем методе экономии у меня есть следующие:
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)
Условный заявления не работает, как я ожидал, что они при сохранении.
Что происходит, так это то, что он правильно сохраняет значение выбранной опции (state/province), но затем не обновляет противоположное до пустого значения.
Итак, допустим, у меня был пользователь, у которого был канадский адрес, а затем обновил его до адреса США. Государство США получает правильное сохранение, но провинция не обновляется до None.
Почему бы не использовать [cleaned_data ] (https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute)? – danihp
Являются ли «США» и «CA» определенными ключами для соответствующих стран? И не следует ли вызывать form.save(), а не data.save()? Что такое «данные»? – Tom
Да, они определенно являются ключами. data = newform.BetaProfile (user = user) Я просто не включил его в свое первоначальное сообщение. То, что у меня было, чтобы сохранить правильное значение состояния/провинции, просто не обновляет противоположную, если ее нет. – plumwd