John S
John S

Reputation: 13

Django form missing fields

I'm trying to get a simple form working. Oddly, other forms I wrote in this app are working fine, but this one wont show the fields. Can anyone tell me what I'm missing? Here are the files

views.py:

def newnote(request, record_id):
if request.method == 'POST':
    form = NoteForm(request.POST)
    if form.is_valid():
        form.save()
        return HttpResponseRedirect('/tracker/all/')
else:
    form = NoteForm()
return render(request, 'tracker/noteform.html', {'form': form})

models.py

class Note(models.Model):
record = models.ForeignKey(Record, on_delete=models.CASCADE)
note_text = models.CharField('Notes', max_length=2000)
note_date = models.DateField('Date Entered')

forms.py

class NoteForm(forms.Form):
class Meta:
    model = Note
    fields = ['note_text',
              'note_date'
             ]

template (noteform.html)

<form action="/tracker/newnote/" method="post">  
<div id="fields">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit" />
</div>
</form>

One other note, I have commented out the div id called "fields", to rule out CSS as the issue.

Upvotes: 0

Views: 1813

Answers (1)

Daniel Roseman
Daniel Roseman

Reputation: 599490

Your form is based on form.Form, which doesn't know anything about models, doesn't expect a Meta class, and expects all its fields to be declared manually - since you have not declared any fields, nothing will show on the template.

It should inherit forms.ModelForm instead.

Upvotes: 1

Related Questions