Django表格中的自动增量

2024-05-23 17:49:12 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有这个model.py:

class Order(models.Model):
    delivery = models.BooleanField()

我有这个表单。py:

class OrderForm(ModelForm):
    class Meta:
        model = Order
        fields = ["delivery"]

我有这个views.py:

def get_order(request):
    if request.method == "POST":
        form = OrderForm(request.POST)
        if form.is_valid():
            order_instance = Order(form.cleaned_data["delivery"])
            order_instance.save()
            return HttpResponseRedirect("/end")
    else:
        form = OrderForm()
    return render(request, "forms/test.html", {"form": form})

HTML页面显示表单页面

有了这段代码,我的程序会告诉我,他不高兴,因为我给了“交货”字段“null”,因为Django自动为每个模型创建了一个“id”字段,所以他希望我给他“id”和“交货”字段

“id”字段应该是自动递增的。这是我的主键。但就形式而言,它似乎不起作用。是否有一种方法可以只指定传递,并让自动增量为id执行任务


Tags: instancepyformid表单modelifmodels
3条回答

id字段的自动递增不起作用,因为您没有保存从表单检索的对象。尝试使用order_instance.save()。另见documentation

如果需要django模板上的表单,请添加上下文字典

context = {
'form':form,
}
return render(request, 'appname/template-name.html', context)

在else语句之后添加此项

您是否在admin.py文件中注册了该模型?如果没有,请转到你的应用程序文件夹,找到admin.py并执行以下操作:

from .models import modelnamehere
admin.site.register(modelnamehere)

这样做,让我知道你的问题是否解决了。通常django会自动将id字段添加到模型中

相关问题 更多 >