【发布时间】:2017-10-06 09:26:47
【问题描述】:
我想在forms.py的queryset中设置一个动态变量,我用__init__传递动态变量,我认为forms.py中的代码是正确的,问题是如何传递变量观看次数?
forms.py:
class ContainerForm(forms.ModelForm):
vehicle=forms.ModelChoiceField(required=False,queryset=Vehicle.objects.all(),widget=forms.Select(attrs={'class':'form-control'}))
def __init__(self, *args, **kwargs):
vehicle_id = kwargs.pop('vehicle_id',None)
super(ContainerForm, self).__init__(*args, **kwargs)
if vehicle_id:
self.fields['vehicle'].queryset = Vehicle.objects.filter(id=vehicle_id)
views.py
class ContainerCreate(CreateView):
form_class = ContainerForm(id= vehicle_id)
template_name = 'vehicule_app/container_form.html'
错误说:
Exception Value:'ContainerForm' object is not callable
【问题讨论】:
-
错误是因为
form_class必须是表单类,但是你正在实例化一个实例。您没有包含足够的代码来提供进一步的帮助。vehicle_id来自哪里?表单如何使用id? -
是的,你是对的,vehicle_id 来自我的模型 Vehicle
-
这没有意义。在您的问题中,您使用的是
vehicle_id,但您尚未在任何地方定义它。价值均值从何而来?网址?如果是这样,请显示 url 模式。您还没有展示模型表单如何使用id。 -
这是我的网址:127.0.0.1:8000/vehicule_app/1/containeradd,数字 1 是车辆 ID,我不知道如何将其设置到我的视图中
-
您还没有显示 URL 模式。
标签: django django-forms django-views