Django simple ModelForm not showing on page (I'm using class based-views), what could be the problem?

41 Views Asked by At

I'm trying to build a form to use it as a filter for my project search page, but the {{form}} shows nothing. Here is how everything is set up:

The model I'm trying to use from models.py

class Exemplar(models.Model):
    class Meta:
        verbose_name_plural = 'Exemplares'
    tipoDeExemplar = models.ForeignKey(TipoDeExemplar, on_delete=models.SET_NULL, blank=True, null=True, verbose_name="Tipo De Exemplar")
    numeroDeRegistro = models.CharField(max_length=255, verbose_name="Número Do Registro")
    especie = models.ForeignKey(Especie, on_delete=models.CASCADE, null=True)
    dataDoRegistro = models.DateField(blank=True, null=True, verbose_name="Data Do Registro")
    estadoDoExemplar = models.CharField(blank=True, null=True, max_length=255, verbose_name="Estado do Exemplar")
    tipoDeMaterial = models.CharField(blank=True, null=True, max_length=255, verbose_name="Tipo De Material")
    procedencia = models.CharField(blank=True, null=True, max_length=255, verbose_name="Procedência")
    remetente = models.CharField(blank=True, null=True, max_length=255, verbose_name="Remetente")
    armario = models.CharField(blank=True, null=True, max_length=255, verbose_name="Armário")
    gaveta = models.CharField(blank=True, null=True, max_length=255, verbose_name="Gaveta")
    complemento = models.CharField(blank=True, null=True, max_length=255, verbose_name="Complemento")
    amostraDeOrigem = models.CharFie
    fotoDoExemplar = models.ImageField(null=True, blank=True, upload_to='imagens/', verbose_name="Foto Do Exemplar")
    slug = models.SlugField(max_length=255, unique=True)

    def __str__(self):
        return self.numeroDeRegistro

My forms.py file (very short)

from django.forms import ModelForm
from acervo.models import Exemplar

class ExemplarForm(ModelForm):
    class Meta:
        model = Exemplar
        fields = '__all__'

My view on views.py (seems to be working since I can open the page)

class BuscaView(ListView):
    model = Exemplar
    template_name = 'busca.html'
    form_class = ExemplarForm

Piece of the HTML template where I try to use the Django ModelForm

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

From what I've researched in other post and on YouTube tutorials, everything seems to be ok, but only the button shows up. What could be the problem?

1

There are 1 best solutions below

0
Hosseink9 On

I think at first you need write {% block content %} in the line 1 or 2 of your code and in the end you should close it with {% endblock %} in the down of your code

And you should write your url view in the action in tag; <form action="{% url 'app_name:url_name' %}">

url_name:

`urlpatterns = [
    path('url', your_view, name='url_name'),
]`