2017-12-07 2 views
0

statt die ganze Form ich nur den Absenden-Button zu sehen bin nicht geschaltet die FormularfelderDjango Forms keine Eingabefelder

Tor: get Formularfelder zu laden und in der Lage sein Formular einzureichen.

views.py Datei

from django.shortcuts import render 
from django.template.response import TemplateResponse 
from django.views import generic 
from friendsbook.models import Status,User 
from django.views.generic.edit import CreateView 
from .forms import CreatePost 

class IndexView(generic.ListView): 
    template_name='uposts/home.html' 
    context_object_name='status_object' 

    def get_queryset(self): 
     return Status.objects.all() 

class post_detail(generic.DetailView): 
    model=Status 
    context_object_name='user_profile' 
    template_name='uposts/detail.html' 

    def get_queryset(self): 
     abc=Status.objects.all() 
     return abc; 

def create_post(request): 
    form=CreatePost() 
    return render(request,"uposts/createpost.html",{'form':form}) 

forms.py Datei

from django import forms 
from friendsbook.models import Status 

class CreatePost(forms.Form): 

    class meta: 
     model=Status 
     fields = ("title","username") 

createpost.html Datei in bestimmten Ordner

{% extends "friendsbook/structure.html" %} 
{% block content %} 
<form action="" method="post">{%csrf_token %} 
    {{ form.as_table }} 
    <input type="submit" value="Save"> 
</form> 

{% endblock %} 

Ich versuche es auch mit Python Shell, aber es ist nutzlos. sieh dir das an, es gibt mir leere Zeichenkette anstelle von Formularfeldern.

enter image description here

mir bitte helfen.

Antwort

1

Sie haben hier ein paar Fehler.

Zuerst muss zum Erstellen von Feldern aus einem Modell das Formular von forms.ModelForm, nicht forms.Form erben.

Zweitens muss die innere Klasse Meta, nicht meta genannt werden.

+0

Danke das ist nur Tippfehler. Stuck seit einer halben Stunde in diesem .. –

1

Da Sie keine ModelForm verwenden, müssen Sie die field s definieren. Und Sie können die model = Status Deklaration loswerden.

Try this:

from django import forms 


class CreatePost(forms.Form): 
    title = forms.CharField() 
    username = forms.CharField() 

    class meta: 
     fields = ("title","username") 

Da es keine ModelForm, die form hat keine Ahnung, was in den Status Modellfelder gibt. Und es gibt keine Möglichkeit, die Felder zu instanziieren (da sie nicht definiert sind).

Ich denke, dass Sie wahrscheinlich eine ModelForm verwenden möchten, es sei denn, es gibt einen zwingenden Grund nicht zu.