Django 无法保存表单数据

Django can't save form data

我正在做一个 django 项目,遇到了一个奇怪的问题。
我为此使用 model form。 尽管我写了 form.save() 如下所示,但新数据并未保存。

# in views.py
class ProductUpdateView(self, request, product_id):
def get(self, request, product_id):
        product = get_object_or_404(Product, id=product_id)
        name = product.name
        id = product.id
        form = ProductEditForm(instance=product)
        context = {
            "form": form,
            "name": name,
            "id": id,
        }
        return render(request, "management/product_detail.html", context)
    

    def post(self, request, product_id):
        form = ProductEditForm(request.POST, instance=request.user)
        product = get_object_or_404(Product, id=product_id)
        if form.is_valid():
            form.save()
            messages.success(request, f"'{product.name}' is successfully updated!")
            return redirect("products_list")
        else:
            messages.warning(request, "form is invalid")
            return redirect("products_list")
# in forms.py
class ProductEditForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = ["name", "description", "price", "is_available", "category"]

    def __init__(self, *args, **kwargs):
        super(ProductEditForm, self).__init__(*args, **kwargs)
        for field in self.fields:
            self.fields[field].widget.attrs["class"] = "form-control"

先生,你能试试这个并给我反馈吗,我不太确定 这只是更改产品名称其他功能可能不起作用

form = ProductEditForm(request.POST )
product = get_object_or_404(Product, id=product_id)
if form.is_valid():
    product.name = request.POST['name']
    product.save()
    messages.success(request, f"'{product.name}' is successfully updated!")
    return redirect("products_list")

instance=request.user 先生,我把它给你删除了,然后再添加回来,我不知道它的用途

欢迎先生

我终于解决了这个问题!

# views.py
def post(self, request, product_id):
        form = ProductEditForm(request.POST, instance=request.user)
        product = get_object_or_404(Product, id=product_id)
        if form.is_valid():
            # get category instance
            category = Category.objects.get(id=int(request.POST["category"]))
            # is_available
            if request.POST["is_available"] == "on":
                is_available = True
            else:
                is_available = False

            product.name = request.POST["name"]
            product.description = request.POST["description"]
            product.price = request.POST["price"]
            product.is_available = is_available
            product.category = category
            product.save()

            messages.success(request, f"'{product.name}' is successfully updated!")
            return redirect("products_list")
        else:
            messages.warning(request, "form is invalid")
            return redirect("products_list")