У меня есть две модели:
class Studio(models.Model):
name = models.CharField("Studio", max_length=30, unique=True)
class Film(models.Model):
studio = models.ForeignKey(Studio, verbose_name="Studio")
name = models.CharField("Film Name", max_length=30, unique=True)
У меня есть форма Film, которая позволяет пользователю выбрать уже существующую студию или ввести новую one:
class FilmForm(forms.Form):
studio = forms.ModelChoiceField(Studio.objects, required=False)
new_studio = forms.CharField(max_length=30, required=False, label = "New Studio Name")
name = forms.CharField(max_length=30, label = "Film Name")
Есть проверка, чтобы гарантировать, что имя new_studio еще не существует. Если пользователь вводит new_studio, я хочу сохранить студию, а затем сохранить новый фильм.
form = FilmForm(request.POST)
if form.is_valid(): # All validation rules pass
std = Studio(name = form.cleaned_data['new_studio'])
std.save()
Но тогда как мне сохранить фильм экземпляр с новым идентификатором студии? Я видел этот вопрос , но что, если у меня гораздо больше полей в модели фильма и форме фильма? Если я использую связанный ответ, мне придется ввести каждое поле:
studio = Studio.objects.get(name=request.POST['new_studio'])
newFilm=Film(name=form.name, studio=studio, field_one = form.field_one, field_two = form.field_two, etc.)
Как правильно это реализовать?