【发布时间】:2023-02-02 22:52:41
【问题描述】:
我对 Django 比较陌生,所以希望这是一个非常简单的问题。我发现调试很困难,也许这是我这里问题的一部分。
问题:Django 表单似乎没有填充发布数据。
概括:我有2个模型实体和休息时间.休息时间与 FK 关系实体编号(不是PK)上实体模型。
我想为所有字段生成一个空表单休息时间.生成基本表单会填充所有空字段,但对于 FK,它会生成一个包含所有 PK 的下拉列表实体桌子。这没有帮助,所以我在下面的 ModelForm 中排除了它,并尝试用所有的列表替换entity_ids的实体桌子。此表单按预期呈现。
class BreakForm(ModelForm):
class Meta:
model = Breaks
#fields = '__all__'
exclude = ('entity',)
def __init__(self, *args, **kwargs):
super(BreakForm, self).__init__(*args, **kwargs)
self.fields['entity_id'] = ModelChoiceField(queryset=Entities.objects.all().values_list('entity_id', flat=True))
下面的FormView就是URL调用的cbv。如下所示,如果我填充表单,以及 FK 列实体编号选择其中一个值,表单将不会提交。通过表单模板上的该字段,将出现以下消息选择一个有效的选项。该选项不是可用选项之一.
class ContactFormView(FormView):
template_name = "breaks/test/breaks_form.html"
form_class = BreakForm
我最初的想法是这个字段的数据类型(字符串/整数)是错误的,或者 Django 需要实体表(无论出于何种原因)。
所以我向 FormView 添加了一个 post 函数,可以看到 request.body 正在正确填充。但是我无法弄清楚如何将其填充到 ModelForm 中并保存到数据库中,或者如何克服上述问题。
【问题讨论】:
标签: python django django-models django-views django-forms