我不知道为什么我的表格无效。尽管一切似乎都很正常。我没有任何错误。向您发送models.py的屏幕截图 这是我的forms.py
class LeadForm(forms.ModelForm):
product_queryset = []
product_name = forms.MultipleChoiceField(choices=product_queryset, required=False)
contact = PhoneNumberField()
def __init__(self, *args, **kwargs):
super(LeadForm, self).__init__(*args, **kwargs)
self.fields["product_name"].choices = [(pro.get('id'), pro.get('name')) for pro in
Products.objects.all().values('id', 'name')]
class Meta:
model = Lead
exclude = ('created_at','created_by')
widgets = {
'date_of_enquiry': DateInput(attrs={'type': 'date'})
}
这是我的观点。py
def create_lead(request):
u = User.objects.get(username=request.user.get_username())
if request.method == 'POST':
print(request.POST)
# form = LeadForm()
form = LeadForm(request.POST)
if form.is_valid():
print('inside valid')
form.save(commit=True)
form.created_by = u
form.save()
form = LeadForm()
context = {"form": form}
return render(request, 'create_lead.html', context)
答案 0 :(得分:1)
您应该呈现所得到的错误,并将其发送到模板:
def create_lead(request):
form = LeadForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
instance = form.save(commit=False)
instance.created_by = request.user
instance.save()
return redirect('/sucess_url')
context = {"form": form}
return render(request, 'create_lead.html', context)
并在模板中呈现错误:
{% for field in form %}
{{ field.errors }}
{% endfor %}
可以在documentation
中找到有关表单错误呈现的更多信息。
可能您应该从Form类中删除__init__
方法,而应在__str__
模型中添加一个Product
方法:
class Product(models.Model):
# rest of the code
def __str__(self):
return self.name
答案 1 :(得分:0)
请按照您的表格进行操作。py
class Meta:
model = Lead
exclude = ('created_at','created_by')
fields = ('product_name', [and all your fields which you want to include])
widgets = {
'date_of_enquiry': DateInput(attrs={'type': 'date'})
}