Ниже приведены все мои модели. В основном это сайт аукциона
class Item(models.Model):
name = models.CharField(max_length = 30)
description = models.TextField()
image = models.ImageField(upload_to='media/')
category = models.CharField(max_length=100)
ask = models.DecimalField(default=0, max_digits=6, decimal_places=2)
created_at = models.DateTimeField(default=datetime.now, blank=True)
closes = models.DateTimeField()
class Bid(models.Model):
item = models.ForeignKey(Item)
user = models.ForeignKey(User)
price = models.DecimalField(default=0, max_digits=6, decimal_places=2)
created_at = models.DateTimeField(default=datetime.now, blank=True)
Это форма:
class itemform(ModelForm):
class Meta:
model = Item
fields =['name','description','image','category','ask','closes']
Просмотр для сохранения формы:
def createitem(request):
if request.method == "POST":
form= itemform(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('/items')
else:
form = itemform()
return render(request, 'app/create.html', {'form':form})
create.html
{% extends 'app/layout.html' %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p}}
<button type ="submit">Save</button>
</form>
{% endblock %}
Вы должны слегка изменить свой вид, чтобы вы только перенаправляли, когда форма действительна. Если форма недействительна, вы должны повторно отобразить форму.
def createitem(request):
if request.method == "POST":
form= itemform(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('/items')
else:
form = itemform()
return render(request, 'app/create.html', {'form':form})
Таким образом, вы увидите сообщения об ошибках формы, которые помогут вам понять, в чем проблема.
returns render(...)
в конце. Проверьте свой отступ.