我需要得到导演执导的“电影”(鹈鹕)的票数。电影和导演是不同的类。多亏了一个stackoverflow用户,我才能够从模板上做到这一点,但是当我们谈论两个模型类时,我认为它可能会有所不同。
我想在Director中创建一个函数,该函数可以告诉我他已经完成了多少部电影,但是我不知道如何从“导演”中调用“ Peliculas”
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'
)
def get_num_peliculas(self):
n_peliculas = Pelicula.object.all().count #NOT WORKING
return n_peliculas
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')
)
actores = models.ManyToManyField(
Actor,
blank=True
)
我该怎么做?
答案 0 :(得分:1)
您可以使用pelicula_set
反向查询该关系,例如:
class Director(models.Model):
# ...
def get_num_peliculas(self):
return self.pelicula_set.count()
如果您在related_name=...
中为主管指定了一个ForeignKey
,那么这就是反向关系的名称。
或者,您可以.filter(..)
查询集,基本上就是这种反向关系:
class Director(models.Model):
# ...
def get_num_peliculas(self):
return Pelicula.objects.filter(director=self).count()