Hola, soy nuevo en django y estoy tratando de crear un sitio web que proporcione series con temporadas y episodios.

Creé con éxito el CreateView para la Serie. Ahora estoy a punto de hacer CreateView para la temporada. Debería verse más o menos así.

Estaciones:
[1] [2] [3] [agregar]

Si hace clic en agregar, debería mostrar un modal con el formulario para la temporada. Mi código se ve así:

models.py

class Serie(models.Model):
    title = models.CharField(max_length=120)
    thumbnail = models.ImageField(upload_to=serie_dir_path)
    ...


class Season(models.Model):
    order = models.IntegerField()
    serie = models.ForeignKey(Serie, on_delete=models.CASCADE)
    ...

class Episode(models.Model):
    title = models.CharField(max_length=120)
    order = models.IntegerField()
    episode = models.FileField(upload_to=episode_dir_path)
    season = models.ForeignKey(Season, on_delete=models.CASCADE)

urls.py

urlpatterns = [
    path('library', LibListView.as_view(), name='library'),
    path('series/<int:pk>/season/<int:order>', SeriesDetailView.as_view(), name='serie-detail'),
]

views.py

class SeasonCreateView(LoginRequiredMixin, CreateView):
    model = Season
    fields = ['order']

    def get_context_data(self, **kwargs):
        context = super(SeasonCreateView, self).get_context_data(**kwargs)
        context.update({
            'serie': Serie.objects.filter()
        })
        return context

season_form.html

{% for season in serie.season_set.all %}
...
{% endfor %}

¿Qué tengo que escribir en el filtro () que obtengo la Serie de la URL?

0
Janik Spies 9 may. 2019 a las 22:28

3 respuestas

La mejor respuesta

Ok lo tengo yo mismo. Solía get_object_or_404

def get_context_data(self, **kwargs):
    s = get_object_or_404(Serie, id=self.kwargs.get('pk'))
    context = super(SeasonCreateView, self).get_context_data(**kwargs)
    context.update({
        'serie': s
    })
    return context
0
Janik Spies 13 may. 2019 a las 20:52
{% for season in serie.season_set.all %}

<p>{season}</p>
{% endfor %}

Pruebe all () en lugar de all para la definición del bucle.

-1
Asnim P Ansari 9 may. 2019 a las 19:31

Obteniendo parámetro de url:

parameter = request.GET.get("parameter_name")

Filtrándolo:

'serie': Serie.objects.filter(model_field_name=parameter)
1
Michael Stachura 10 may. 2019 a las 09:28