我有两个模型:
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)
我有一个电影表单,允许用户选择一个预先存在的工作室,或输入一个新的工作室:
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,我想保存该工作室,然后保存新的Film。
form = FilmForm(request.POST)
if form.is_valid(): # All validation rules pass
std = Studio(name = form.cleaned_data['new_studio'])
std.save()
但是如何将 Film 实例保存到全新的工作室 ID 下呢?我见过这个问题,但是如果我在电影模型和电影形式中有更多字段怎么办?如果我使用链接的答案,我必须输入每个字段:
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.)
实施这个的正确方法是什么?