Форма не сохраняется - form.is_valid () возвращает false

-2

Ниже приведены все мои модели. В основном это сайт аукциона

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 %}
  • 1
    Так в чем же вопрос? Если вы ищете место для размещения кода без контекста, вы должны попробовать такие сервисы, как Pastebin, Hastebin и т. Д.
Теги:
django-forms

1 ответ

1

Вы должны слегка изменить свой вид, чтобы вы только перенаправляли, когда форма действительна. Если форма недействительна, вы должны повторно отобразить форму.

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})

Таким образом, вы увидите сообщения об ошибках формы, которые помогут вам понять, в чем проблема.

  • 0
    это ошибка: представление app.views.createitem не возвращало объект HttpResponse. Вместо этого он вернулся
  • 0
    Приведенный выше код не возвращает эту ошибку, потому что всегда returns render(...) в конце. Проверьте свой отступ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню