我仍在学习Django。我有一个像表单工作流程那样的向导,每个表单都连续填写信息。Django表格不适用于模型表格
我代表我想从表单输入的模型形式:
Models.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})
我不知道,我在正确使用Modelforms。我需要的是一种为我的acctFilterName创建选择下拉列表的方式,所以我手动创建了查询集。
当我保存表单时,表单无效,并在表单清理数据中获得以下内容: 请注意,已清理的数据仅包含tradingCash字段。
我在做什么错?有一个更好的方法吗?为什么表格有效?
您在views.py中保存表单的位置? –
我不这样做,因为form.is_valid()是假的 – Axwack