gpt4 book ai didi

python - 来自 "Generic related"模型的 Django 表单

转载 作者:行者123 更新时间:2023-11-28 18:51:40 26 4
gpt4 key购买 nike

我有一些模型,与 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')

如何制作表单,由 MainForm + Additional_iForm 字段组成,在一个带有一个提交按钮的 html 表单中 (MainForm + Additional_1FormMain + Additional_2Form) 并提供正确的创建和编辑。有办法使用标准的 Django 组件来做到这一点,比如 ForeignKey?

的内联表单集

附言我认为这个问题的答案应该包含在文档的这一部分,但是信息太少无法回答。 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()

最佳答案

创建一个表单标签:

<form action="..." method="POST">
{{ main_form }}
{{ additional_form_1 }}
{{ additional_form_2 }}
<input type="submit" value="Submit!">
</form>

其中 {{ mainform }}{{ additional_form_1 }}{{ additional_form_2 }} 是 Django 为每个生成的 HTML每一种形式。您可以使用 JavaScript 添加编辑反馈或其他功能(例如,当用户为特定字段选择特定值时填写值)。

在后端,您可以检查每个表单是否有效:

if (main_form.is_valid() and
additional_form_1.is_valid() and
additional_form_2.is_valid()):
pass

如果没有,可以在表单页面重新显示错误。

关于python - 来自 "Generic related"模型的 Django 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com