Я пытаюсь сделать следующее в 3 формах, которые обрабатываются одновременно: 1. Сохраните строку темы для электронного письма (это работает) 2. Сохраните содержимое электронного письма. (это работает) 3. Сохраните заголовок электронного письма (работает) и сохраните отношение к строке темы и содержанию электронного письма (не работает).
Я прочитал каждую страницу, что мог сделать с ошибками. Я пробовал это разными способами, но все они не помогли мне.
View.py:
def email_subject_create_view(request):
if request.method == 'POST':
email_subject_form = EmailSubjectForm(request.POST)
email_content_form = EmailContentForm(request.POST)
email_form = EmailForm(request.POST)
if email_subject_form.is_valid() and email_content_form.is_valid() and email_form.is_valid() :
subject = email_subject_form.save(commit=False)
subject.time_created = datetime.datetime.now()
contractor = Contractor.objects.get(user_id=request.user.id)
subject.save()
email_subject_form.save_m2m()
content = email_content_form.save(commit=False)
content.time_created = datetime.datetime.now()
content.save()
email_content_form.save_m2m()
email = email_form.save(commit=False)
email.time_created = datetime.datetime.now()
# this is what I want to do. email.email_core_contents is a M2M field
email.email_subject_lines = subject.id
email.save()
context = {
'email_subject_form': EmailSubjectForm(),
'email_content_form': EmailContentForm(),
'email_form': EmailForm(),
}
return render(request, 'advertise/email_subject_create.html', context)
Я пробовал:
email.email_subject_lines = EmailSubject.objects.get(pk=subject.id)
email.email_subject_lines.set(subject)
email.email_subject_lines.set(pk=subject.id)
Я также пробовал без .save_m2m()
частей кода.
Редактировать:
Ошибка в основном примере:
Direct assignment to the forward side of a many-to-many set is prohibited. Use email_subject_lines.set() instead.
Ошибка в 1 из 3 набора:
Direct assignment to the forward side of a many-to-many set is prohibited. Use email_subject_lines.set() instead.
Ошибка в 2из набора 3:
"<Email: sfeaesfe>" needs to have a value for field "id" before this many-to-many relationship can be used.
Ошибка в наборе 3 из 3:
"<Email: graegre>" needs to have a value for field "id" before this many-to-many relationship can be used.