модели:Джанго: Сохранить идентификатор на OneToOneField
class UserDataUpdate(models.Model):
code = models.CharField(max_length=8)
address = models.CharField(max_length=50)
class UserSurvey(models.Model):
about_treatment = models.CharField(max_length=2)
user_data_update = OneToOneField(UserDataUpdate)
просмотров:
@login_required
def generate_survey(request):
user_data_update = UserDataUpdate.objects.get(code=request.user.username)
if request.method == 'POST':
form = SurveyForm(request.POST)
if form.is_valid():
form.save()
return redirect('/success')
else:
form = SurveyForm(request.GET)
return render_to_response(
'survey.html',
{'form': form },
context_instance = RequestContext(request))
форма:
class SurveyForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(SurveyForm, self).__init__(*args, **kwargs)
for field in self.fields.values():
field.widget = RadioSelect(choices=SURVEY_CHOICES)
class Meta:
model = Survey
exclude = ['user_data_update']
Я просто нужен способ, чтобы установить UserDataUpdate идентификатор (что уже был создан) в UserSurvey.
Я получаю это сообщение на generate_survey request.POST:
user_data_update_app_usersurvey.user_data_update_id may not be NULL
В этом UserSurvey отсутствует большое количество атрибутов по сравнению с оригинальным. Идея этой формы заключалась в том, чтобы установить все поля для использования рендеринга RadioSelect с помощью одного CHOICE. Кстати, спасибо за пример, он работает очень хорошо. Никогда не используется (commit = False) для создания изменяемого объекта. Потрясающие! –