在 Django 表单中设置初始值
Setting an initial value in a Django Form
我必须在表单中设置一个初始值但不知何故不起作用,这非常奇怪,因为我在另一个视图中有完全相同的代码,但在这种情况下我的方法不起作用:
views.py
@login_required
def add_lead(request):
if request.method == 'POST':
lead_form = LeadsForm(request.POST)
if lead_form.is_valid():
lead_form.save()
messages.success(request, 'You have successfully added a new lead')
return HttpResponseRedirect(reverse('add_lead'))
else:
messages.error(request, 'Error updating your Form')
else:
user = {"agent":request.user}
lead_form = LeadsForm(request.POST or None, initial = user)
return render(request,
'account/add_lead.html',
{'lead_form': lead_form}
)
forms.py
class LeadsForm(forms.ModelForm):
class Meta:
model = Leads
fields = ('project_id','company','agent','point_of_contact','services','expected_licenses',
'expected_revenue','country', 'status', 'estimated_closing_date'
)
widgets = {'estimated_closing_date': DateInput(),
}
本质上,代理是登录用户,所以我将 request.user 作为变量传递,但我没有成功,这很奇怪,因为我在另一种形式中有相同的逻辑
任何帮助将不胜感激
如果你想制作一个带有外键的表单,你可以使用ModelChoiceField
。在您的情况下,您可以使用:
class LeadsForm(forms.ModelForm):
agent = forms.ModelChoiceField(queryset=User.objects.all())
class Meta:
model = Leads
fields = ('project_id','company','agent','point_of_contact','services','expected_licenses',
'expected_revenue','country', 'status', 'estimated_closing_date'
)
widgets = {'estimated_closing_date': DateInput(),
}
然后你可以在你的表格首字母中分配带有user_id的数据。
我必须在表单中设置一个初始值但不知何故不起作用,这非常奇怪,因为我在另一个视图中有完全相同的代码,但在这种情况下我的方法不起作用:
views.py
@login_required
def add_lead(request):
if request.method == 'POST':
lead_form = LeadsForm(request.POST)
if lead_form.is_valid():
lead_form.save()
messages.success(request, 'You have successfully added a new lead')
return HttpResponseRedirect(reverse('add_lead'))
else:
messages.error(request, 'Error updating your Form')
else:
user = {"agent":request.user}
lead_form = LeadsForm(request.POST or None, initial = user)
return render(request,
'account/add_lead.html',
{'lead_form': lead_form}
)
forms.py
class LeadsForm(forms.ModelForm):
class Meta:
model = Leads
fields = ('project_id','company','agent','point_of_contact','services','expected_licenses',
'expected_revenue','country', 'status', 'estimated_closing_date'
)
widgets = {'estimated_closing_date': DateInput(),
}
本质上,代理是登录用户,所以我将 request.user 作为变量传递,但我没有成功,这很奇怪,因为我在另一种形式中有相同的逻辑
任何帮助将不胜感激
如果你想制作一个带有外键的表单,你可以使用ModelChoiceField
。在您的情况下,您可以使用:
class LeadsForm(forms.ModelForm):
agent = forms.ModelChoiceField(queryset=User.objects.all())
class Meta:
model = Leads
fields = ('project_id','company','agent','point_of_contact','services','expected_licenses',
'expected_revenue','country', 'status', 'estimated_closing_date'
)
widgets = {'estimated_closing_date': DateInput(),
}
然后你可以在你的表格首字母中分配带有user_id的数据。