Не удалось отправить форму django - PullRequest
0 голосов
/ 11 октября 2019

Я не знаю, почему моя форма недействительна. Несмотря на все кажется нормальным. Я не получаю никакой ошибки. отправляю вам скриншот models.py enter image description here Вот мои формы.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'})
        }

Вот мои views.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 ]

1 голос
/ 11 октября 2019

Вы должны отобразить ошибки, которые вы получаете, для этого вам нужно отправить в шаблон:

def create_lead(request):
    <b>form = LeadForm(request.POST or None)</b>
    if request.method == 'POST':
        if form.is_valid():
            <b>instance = form.save(commit=False)
            instance.created_by = request.user
            instance.save()
            return redirect('/sucess_url')</b>

    context = {"form": form}
    return render(request, 'create_lead.html', context)

И отобразить ошибки в шаблоне:

{% for field in form %}
    {{ field.errors }}
{% endfor %}

Более подробная информация можетможно найти в documentation относительно отображения ошибок формы.

Возможно, вам следует удалить метод __init__ из класса Form, вместо этого добавить метод __str__ вProduct модель:

class Product(models.Model):
   # rest of the code
   def __str__(self):
       return self.name
0 голосов
/ 11 октября 2019

Пожалуйста, укажите в вашем forms.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'})
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...