2017-11-16 1 views
-1

Unten sind alle meine Modelle. Im Grunde ist dies eine Auktions-WebsiteFormular nicht speichern - form.is_valid() gibt false zurück

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) 

Dies ist die Form:

class itemform(ModelForm): 
    class Meta: 
     model = Item 
     fields =['name','description','image','category','ask','closes'] 

Ansicht zum Speichern der Form:

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

So also, wo ist die Frage? Wenn Sie nach einem Ort suchen, an dem Sie ohne Kontext Code eingeben können, sollten Sie Dienste wie Pastebin, Hastebin usw. ausprobieren. – LW001

Antwort

1

Sie sollten Ändere deine Ansicht leicht, damit y Sie können nur umleiten, wenn das Formular gültig ist. Wenn das Formular nicht gültig ist, sollten Sie das Formular erneut rendern.

Auf diese Weise werden Sie die Fehlermeldungen des Formulars sehen, die Ihnen helfen sollten herauszufinden, was das Problem ist.

+0

Das ist der Fehler: Die Ansicht app.views.createitem hat kein HttpResponse-Objekt zurückgegeben. Es wurde keine zurückgegeben –

+0

Der obige Code würde diesen Fehler nicht zurückgeben, da er immer 'render (...)' am Ende zurückgibt. Überprüfen Sie Ihre Einrückung. – Alasdair