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 в ваши модели автоматически.