【问题标题】:How can I filter a query by a foreign key?如何通过外键过滤查询?
【发布时间】:2019-06-18 04:20:39
【问题描述】:

我正在尝试在我的 DirectorDetailView 中获取由其“主管”过滤的“Peliculas”列表

我找不到执行此操作的正确语法。 Django 版本:2.1.4

#MODEL DIRECTOR

class Director(models.Model):
    nombre = models.CharField(
        max_length=100
    )
    fecha_nacimiento = models.DateField()
    fecha_defuncion = models.DateField(
        'Fallecido',
        null=True,
        blank=True,
    )
    foto = models.ImageField(
        upload_to='images/directores/',
        default='images/directores/sin_foto.jpg'
    )

#MODEL PELICULA

class Pelicula(models.Model):
    titulo = models.CharField(
        max_length=100
    )
    url_trailer = models.CharField(
        max_length=100
    )
    fecha = models.DateField()
    notas_posibles = (
        (1, 1),
        (2, 2),
        (3, 3),
        (4, 4),
        (5, 5)
    )
    nota = models.IntegerField(
        default=3,
        choices=notas_posibles
    )
    sinopsis = models.TextField(
        max_length=400,
        default="Sin sinopsis"
    )
    caratula = models.ImageField(
        upload_to='images/peliculas/caratulas',
        default='images/peliculas/caratulas/sin_caratula.jpg'
    )
    imagen_promocional = models.ImageField(
        upload_to='images/peliculas/imagenes_promocionales',
        default='images/peliculas/imagenes_promocionales/sin_imagen.jpg'
    )
    genero = models.ManyToManyField(
        Genero,
        blank=True,
        related_name='genero'
    )
    director = models.ForeignKey(
        Director,
        on_delete=models.SET('Sin Director')
    )

#MY VIEW

class DirectorDetailView(DetailView):
model = Director
template_name = "videoclub/director.html"

def get_context_data(self, **kwargs):  
    print(self.model)
    context = super(DirectorDetailView, self).get_context_data(**kwargs)
    context['peliculas'] = Pelicula.objects.all() #HERE
    return context

有了这个代码,我收到了所有的“Peliculas”,但我只有一个得到了我认为的导演制作的那些。真的不知道我做错了什么。我什至不知道我是否必须使用“DetailView”来执行此操作

伙计们!

【问题讨论】:

    标签: python django model


    【解决方案1】:

    您根本不需要在视图中执行此操作;你在模板中做。

    {{ director.nombre }}
    {% for pelicula in director.pelicula_set.all %}
      {{ pelicula.titulo }}
      {{ pelicula.sinopsis }} # etc
    {% endfor %}
    

    你可以完全删除get_context_data方法。

    【讨论】:

    • 不错!我在找那个!太感谢了。关于 django,我还有很多东西要学。
    猜你喜欢
    • 2014-08-06
    • 2014-01-08
    • 1970-01-01
    • 2012-11-18
    • 2014-08-13
    • 2021-09-21
    • 2018-03-04
    • 2023-03-11
    • 2019-10-26
    相关资源
    最近更新 更多