我有一个电影数据库,有以下模型。我将导演细节存储在Actor模型中。那就是我创建一个演员,然后将他链接为导演。通过这个我可以得到也是演员的导演。现在我的问题是列出所有的董事。我无法编写查询。我大部分时间都得到了ReverseManyRelatedObjectsDescriptor。
class Actor(models.Model):
actorid = models.AutoField(primary_key=True)
name = models.CharField(max_length=250)
sex = models.CharField(max_length=1)
def director_list(self):
directors = self.filter(actor__in=Movie.director).distinct()
**#ReverseManyRelatedObjectsDescriptor error**
return directors
class Movie(models.Model):
movieid = models.AutoField(primary_key=True)
title = models.CharField(max_length=250)
actor = models.ManyToManyField(Actor, related_name="actor")
director= models.ManyToManyField(Actor, related_name="director")
请提前帮助,谢谢。
答案 0 :(得分:1)
如果我理解你的问题,你需要那些导演的演员(没有特定的电影)。所以我要做的就是创建一个Actor的类方法,如下所示:
class Actor(models.Model):
actorid = models.AutoField(primary_key=True)
name = models.CharField(max_length=250)
sex = models.CharField(max_length=1)
@classmethod
def director_list(cls):
directors_available = set (
d.actorid
for movie in Movie.objects.filter(director__is_null = False)
for d in movie.director.all()
)
actors_directors = Actor.objects.filter(actorid__in = list(directors_available))
return actors_directors
现在你可以得到所有像这样的演员的导演:
director_list = Actor.director_list()