gpt4 book ai didi

python - Django 表单在模型表单上无效

转载 作者:太空宇宙 更新时间:2023-11-03 17:14:03 25 4
gpt4 key购买 nike

我还在学习 Django。我有一个类似表单工作流程的向导,其中每个表单都连续填写信息。

我有一个模型表单,它代表我想要从表单中输入的内容:

模型.py

class AccountParameters(models.Model):
acctFilterName = models.ForeignKey(AccountFilters)
excludeClassification = models.ManyToManyField(ClassificationNames)
tradingCash = models.FloatField()

Forms.py

这是一个简化的形式,并不代表真正的实现。这是为了测试。

class AccountSelectionForm(forms.ModelForm):

acctFilterName = forms.ModelChoiceField(queryset=AccountFilters.objects.all().values_list('acctFilterName', flat=True),
label="Account Filters:",
empty_label="Select Here..."
)

excludeClassification = forms.ModelMultipleChoiceField(queryset=ClassificationNames.objects.all().values_list('classificationName', flat=True),
label="Classifications Exclusion:"
)

tradingCash = forms.IntegerField(label="Remove accounts whose trading cash < % of AUM")


class Meta:
model = AccountParameters
fields =['excludeClassification', 'tradingCash',]
exclude = ['acctFilterName']
labels = {
'acctFilterName': _('Account Filters:')
}

views.py

def accountSelections(request): # NewRebalnce 2: AccountParameters with Accounts and Trading Form

if request.method == "POST":
form = AccountSelectionForm(request.POST)

if form.is_valid():

accountParameters = AccountParameters


#tradingCash = form.cleaned_data['tradingCash']

return render(request, 'NewRebalance_3.html', {'model_selection_form': ModelSelectionForm()})
else:
form = AccountSelectionForm()
return render(request, 'NewRebalance2.html', {'account_selections_form': form})

我不确定我是否正确使用了模型表单。我需要的是一种为我的 acctFilterName 创建选择下拉菜单的方法,因此我手动创建了查询集。

当我保存表单时,它无效,并且在表单清理数据中我得到以下内容: 请注意,清理后的数据只有 tradeCash 字段。

我做错了什么?有一个更好的方法吗?为什么表格有效?

Screenshot of Debug

最佳答案

尝试从 ModelChoiceField 中删除 .values_list('acctFilterName', flat=True) 并删除 .values_list('classificationName', flat=True) 来自 ModelMultipleChoiceField

它们应该是这样的:

acctFilterName = forms.ModelChoiceField(
queryset=AccountFilters.objects.all(),
label="Account Filters:",
empty_label="Select Here...")

excludeClassification = forms.ModelMultipleChoiceField(
queryset=ClassificationNames.objects.all(),
label="Classifications Exclusion:")
<小时/>

.values_list将删除您的查询集中 ModelChoiceField 识别该项目所需的所有数据,仅保留您指定为参数的模型字段。也就是说,您在此处删除的是模型的主键,这是基本的。

关于python - Django 表单在模型表单上无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33814759/

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