无法提交Django表格

时间:2019-10-11 08:24:54

标签: django django-models django-forms django-views

我不知道为什么我的表格无效。尽管一切似乎都很正常。我没有任何错误。向您发送models.py的屏幕截图 enter image description here 这是我的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)

2 个答案:

答案 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'})
    }
相关问题