【问题标题】:Django auto increment in form表单中的 Django 自动增量
【发布时间】:2021-10-27 08:47:12
【问题描述】:

假设我有这个model.py:

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

我有这个form.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”给“delivery”字段,因为 Django 自动为每个模型创建一个“id”字段,所以他希望我给他“id” " 和 "delivery" 字段。

“id”字段应该是自动递增的。这是我的主键。但是对于形式,它似乎不起作用。有没有办法只指定交付并让自动增量为 id 完成工作?

【问题讨论】:

标签: python django


【解决方案1】:

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

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

在 else 语句之后添加这个。

【讨论】:

  • 我的表单显示没有任何问题。我的问题是关于“id”字段的。我不希望用户与这个领域有任何关系。他应该自动递增,但它不起作用。
【解决方案2】:

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

【讨论】:

  • 刚刚看到我在发布的代码中出现了一些错误。它不是问题,因为它不是我真正的代码。我将编辑我的帖子。
【解决方案3】:

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

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

执行此操作,让我知道您的问题是否已解决。通常 django 会自动将 id 字段添加到您的模型中。

【讨论】:

  • 是的,它已经在管理文件中注册了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 2015-02-03
相关资源
最近更新 更多