に接続されたいくつかのモデルがありますGenericForeignKey
:
Class Main(models.Model)
filed_1 = models.CharField(max_length=20)
object_id = models.PositiveIntegerField()
content_type = models.ForeignKey(ContentType)
object = generic.GenericForeignKey('content_type', 'object_id')
Class Additional_1(models.Model):
f_1 = models.CharField(max_length=20)
f_2 = models.CharField(max_length=20)
Class Additional_2(models.Model):
d_1 = models.CharField(max_length=20)
d_2 = models.CharField(max_length=20)
そして、このモデルのフォーム:
Class MainForm(forms.ModelForm):
class Meta:
model = Main
fields = ('filed_1', 'object_id', 'content_type')
widgets = {
'object_id': forms.HiddenInput,
'content_type': forms.HiddenInput
}
Class Additional_1Form(forms.ModelForm):
class Meta:
model = Additional_1
fields = ('f1', 'f2')
Class Additional_2Form(forms.ModelForm):
class Meta:
model = Additional_2
fields = ('d1', 'd2')
1 つの送信ボタン ( +と+ )を持つ 1 つの html フォームにMainForm
+のフィールドで構成されるフォームを作成し、正しい作成と編集を提供する方法。インラインフォームセットのような標準のDjangoコンポーネントを使用してそれを行う方法はありますか?Additional_iForm
MainForm
Additional_1Form
Main
Additional_2Form
ForeignKey
PS この質問への回答はドキュメントのこのセクションに含まれているはずですが、回答するには情報が少なすぎます。https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#generic-relations-in-forms-and-admin
エディション #1
# This is always false, because of 'object_id' in main_form
if main_form.is_valid() and additional_1_form.is_valid():
additional = additional_1_form.save()
main_form.object_id = additional .id # I need something like this to set object_id
main_form.save()