Как заполнить поле формы Django в представлении?

В моих Django формах у меня 5 полей, но 4 из них я беру из html шаблона. 5. одно будет заполнено в представлении. Когда я пытаюсь сделать это, то появляется сообщение, что форма не действительна. Как я могу заполнить данные в представлениях?

forms.py

class ProductForm(forms.ModelForm):

    class Meta:
        model = ProductModel
        fields = ('category','brand','series','model','asin')

productform.html

  <form id="firstform" action="{% url 'productpage' %}" method="POST">
    {% csrf_token %}
    <input type="text" id="category" name="category" placeholder="Category">
    <input type="text" id="brand" name="brand" placeholder="Brand">
    <input type="text" id="series" name="series" placeholder="Series">
    <input type="text" id="model" name="model" placeholder="Model">

    <input type="submit" id="save-button" name="save-button" value="Save" >
  </form>

views.py

def productpage(request):

    if request.POST.get('save-button'):
        form = ProductForm()
        if request.method == 'POST':
            form = ProductForm(data=request.POST)
            print("a")
            if form.is_valid():
                print("i")
                form.cleaned_data["asin"] = "B324235252"
                form.save()
                HttpResponse("KAYDEDİLDİ")
            else:
                print("iiii")
                HttpResponse("Form is not valid")
        else:
            form = ProductForm()
    return render(request,"first_app/productform.html")

Исключите поле из формы:

class ProductForm(forms.ModelForm):

    class Meta:
        model = ProductModel
        fields = ('category','brand','series','model')  # 🖘 no asin

и затем заполните его в представлении:

def productpage(request):
    if request.POST.get('save-button'):
        if request.method == 'POST':
            form = ProductForm(request.POST, request.FILES)
            if form.is_valid():
                form.instance.asin = 'B324235252'
                form.save()
                HttpResponse("KAYDEDİLDİ")
    return render(request, 'first_app/productform.html')
Вернуться на верх