在 Django 的视图中编辑项目

Edit item within views in Django

有一些问题,我正在尝试通过进行更改并单击更新按钮来更新客户端上的产品 - 我的页面正在刷新 w/o 更新信息,因此产品具有相同的数据像之前一样。但在日志中,GET 请求的状态代码为 200,并显示数据库中更新的对象。当我尝试通过管理 Django 仪表板进行更新时,一切正常,问题仅出在 Web 应用程序的客户端。会有什么问题? 提前致谢!

models.py

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
CATEGORY = (
    ('Stationary', 'Stationary'),
    ('Electronics', 'Electronics'),
    ('Food', 'Food'),
)


class Product(models.Model):
    name = models.CharField(max_length=100, null=True)
    quantity = models.PositiveIntegerField(null=True)
    category = models.CharField(max_length=50, choices=CATEGORY, null=True)

    def __str__(self):
        return f'{self.name}'


class Order(models.Model):
    name = models.ForeignKey(Product, on_delete=models.CASCADE, null=True)
    customer = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
    order_quantity = models.PositiveIntegerField(null=True)

    def __str__(self):
        return f'{self.customer}-{self.name}'

views.py

@login_required(login_url='user-login')
@allowed_users(allowed_roles=['Admin'])
def product_edit(request, pk):
    item = Product.objects.get(id=pk)
    if request.method == 'POST':
        form = ProductForm(request.POST, instance=item)
        if form.is_valid():
            form.save()
            return redirect('dashboard-products')
    else:
        form = ProductForm(instance=item)
    context = {
        'form': form,
    }
    return render(request, 'dashboard/products_edit.html', context)

forms.py

class ProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = '__all__'

html 模板:

{% extends 'partials/base.html' %}
{% block title %}Products Edit Page{% endblock %}
{% load crispy_forms_tags %}

{% block content %}
<div class="row my-4">
    <div class="col-md-6 offset-md-3 p-3 bg-white">
        <h3>Edit Item</h3>
        <hr>
        <form>
            {% csrf_token %}
            {{ form|crispy }}
            <input class="btn btn-info" type="submit" value="Confirm">
        </form>
    </div>
</div>
{% endblock %}

您忘记传递您正在使用的 POST 方法 GET

{% extends 'partials/base.html' %}
{% block title %}Products Edit Page{% endblock %}
{% load crispy_forms_tags %}

{% block content %}
<div class="row my-4">
    <div class="col-md-6 offset-md-3 p-3 bg-white">
        <h3>Edit Item</h3>
        <hr>
        <form method="post">
            {% csrf_token %}
            {{ form|crispy }}
            <input class="btn btn-info" type="submit" value="Confirm">
        </form>
    </div>
</div>
{% endblock %}