Я пытаюсь сохранить пару форм ModelFormset, но сталкиваюсь с ошибкой IntegrityError. Вот код:
billing_formset = BillingFormSet(request.POST,prefix='billing')
cc_formset = CCFormSet(request.POST,prefix='cc')
if billing_formset.is_valid() and cc_formset.is_valid():
bp = UserBillingProfile()
cc = UserCreditCard()
for form in billing_formset.forms:
billing_profile = form.save(commit=False)
billing_profile.user = request.user
bp = billing_profile.save()
for form in cc_formset.forms:
cc = form.save(commit=False)
cc.billing_profile = bp
cc = form.save()
Этот код вызвал следующий код:
IntegrityError at [url удален]
(1048, «Столбец« user_billing_profile_id »не может быть пустым»)
РЕДАКТИРОВАТЬ: Вот итерационный код, который также исправляет мою опечатку. Я сталкиваюсь в основном с той же проблемой.
billing_profile_form = billing_formset.forms[0]
cc_form = cc_formset.forms[0]
unsaved_billing_profile = billing_profile_form.save(commit=False)
user_billing_profile = unsaved_billing_profile.save()
unsaved_cc = cc_form.save(commit=False)
unsaved_cc.user_billing_profile = user_billing_profile
cc = unsaved_cc.save()
Строка проблемы дает: «Невозможно назначить None:« UserCreditCard.user_billing_profile »не допускает нулевые значения». Кажется unsaved_billing_profile.save () возвращает ноль? Почему?
Это отчасти безумие; кажется, все правильно. Я не получаю никаких ошибок при сохранении платежного профиля. Любые идеи о том, что я должен проверить? Кажется, что во втором цикле все идет не так, как кажется, значение bp равно None.
Заранее спасибо.