Django автоинкремент в форме

Допустим, у меня есть такой 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 = form.cleaned_data["delivery"]
            return HttpResponseRedirect("/end")
    else:
        form = OrderForm()
    return render(request, "order.html", {"form": form})

На странице HTML отображается страница формы.

С этим кодом моя программа скажет мне, что она недовольна, потому что я пытаюсь использовать delivery (булево) для поля id, потому что Django автоматически создает поле id для каждой модели. Это поле должно автоматически увеличиваться, но с формой это не работает. Как я могу заставить его автоматически увеличиваться?

Если вам нужна форма на шаблоне django, то добавьте контекстный словарь.

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

Добавьте это после оператора else.

Автоинкремент поля id не работает, потому что вы не сохраняете объект, полученный из формы. Попробуйте использовать order_instance.save(). Также смотрите документацию.

Зарегистрировали ли вы модель в файле admin.py? Если нет, то перейдите в папку app, найдите файл admin.py и сделайте следующее:

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

Сделайте это и дайте мне знать, была ли решена ваша проблема. Обычно django добавляет поле id в ваши модели автоматически.

Вернуться на верх