2013-06-18 4 views
5

Junge, es fühlt sich an, als hätte ich ALLES hier versucht, und ich kann dieses Formular nicht richtig rendern (z. B. mit einer Teilmenge von Feldern). Hier die entsprechenden Positionen (extra Positionen entfernt):Ausschließen von Feldern in Django-Klassenbasierten Ansichten funktioniert nicht

models.py:

class Response(models.Model): 
    public = models.BooleanField(default=False) 
    question = models.CharField(max_length=255, default='', blank=True) 

class ResponseForm(ModelForm): 
    class Meta: 
     model = Response 
     fields = ['question'] 

views.py:

class ResponseCreate(CreateView): 
    model = Response 
    fields = ['question'] 

response_form.html:

<form action="" method="post">{% csrf_token %} 
    {{ form.as_p }} 
    <input type="submit" value="Create" /> 
</form> 

Ich habe Lesen Sie jedes Dokument und schlagen Sie vor, exclude, excludes, field,zu verwendenin Permutationen von Tupel oder Liste, und egal, was das "öffentliche" Feld scheint jedes Mal zu erscheinen! Gedanken?

Danke für Ihre Hilfe!

+0

Wenn Sie in Ihrem Formular ein Komma hinzufügen, 'fields = ['question',]', ändert sich das? –

+0

@ScottWoodall Das würde einen Unterschied nur für Tupel-Typ machen, nicht Liste – karthikr

Antwort

9

Es ist wie Sie müssen angeben, form_class auf Ihrer Ansicht aussieht:

class ResponseCreate(CreateView): 
    model = Response 
    form_class = ResponseForm 
+0

Wow, das war einfach. Die Dokumentation überspringt das wirklich. Vielen Dank! – aronchick

0

Nur möchte ich erwähnen, dass Sie nicht wirklich brauchen eine Modelform separat erstellt werden.

Generische Ansichten leuchten wirklich, wenn mit Modellen gearbeitet wird. Diese generischen Ansichten automatisch aModelForm schaffen, so lange sie aus arbeiten können, die Modellklasse

verwenden, können Sie nur diese verwenden.

class Response(models.Model): 
    public = models.BooleanField(default=False) 
    question = models.CharField(max_length=255, default='', blank=True) 

class ResponseCreate(CreateView): 
    model = Response 
    fields = ['question'] 
Verwandte Themen