python - 无法查询“Cast object (1)”:必须是“Person”实例
问题描述
我正在尝试创建我的演员的详细列表,其中将显示他曾担任演员的所有节目。这是本教程末尾 Mozilla 挑战自己部分的一部分。
我无法过滤我的班级演员,以便我可以获得特定的演员。
我不明白为什么过滤器不起作用。例如,如果 self.object 的值为“3”,它应该过滤掉所有的演员,只显示 id 为 3 的演员。但似乎并非如此。我也不理解它抛出的错误代码。我的 Cast 课程确实有一个人的外键。
与我的节目详细信息页面类似,我希望它是演员在电影中出演的,而不是演员表。
看法
class ActorDetailView(generic.DetailView):
model = Cast
template_name = 'show/actor-detail.html'
def get_context_data(self, **kwargs):
context = super(ActorDetailView, self).get_context_data(**kwargs)
context['casts'] = Cast.objects.filter(person_id=self.object)
return context
楷模
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Character(models.Model):
name = models.CharField(max_length=128)
on_which_show = models.ForeignKey('Show', on_delete=models.SET_NULL, null=True)
def __str__(self):
return self.name
class Cast(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
cast_show = models.ForeignKey('Show',on_delete=models.CASCADE)
character = models.ForeignKey(Character, on_delete=models.CASCADE, null=True)
def get_absolute_url(self):
return reverse('actor-detail', args=[str(self.id)])
class Show(models.Model):
title = models.CharField(max_length=200)
genre = models.ManyToManyField(Genre, help_text='Select a genre for this book')
language = models.ForeignKey('Language', on_delete=models.SET_NULL, null=True)
summary = models.TextField(max_length=1000, help_text='Enter a brief description of the show', null=True)
cast_of_the_show = models.ManyToManyField(Person,through='Cast')
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('show-detail', args=[str(self.id)])
解决方案
您的ActorDetailView的模型应该是Person而不是Cast。然后,您可以使用人员记录来获取他们所属的所有演员表。
class ActorDetailView(generic.DetailView):
model = Person
template_name = 'show/actor-detail.html'
def get_context_data(self, **kwargs):
context = super(ActorDetailView, self).get_context_data(**kwargs)
context['casts'] = Cast.objects.filter(person=self.object)
return context
推荐阅读
- c++ - C++ 结构元素数量(成员变量)
- r - r中的序列基于另一个
- google-cloud-platform - 从 GCP 中的命令行获取客户端 ID
- python - 熊猫的 itterows 更新问题
- kubernetes - Kubernetes 从 GCR 私有仓库下载镜像
- python - python raises syntax error in environment variable path
- python - 如何从数据框中的第 5 列应用 cummax 逻辑
- monads - 如何在 Idris 中使用 ST 来获得 ReaderT r Maybe a 的功能?
- python - 使用 Python SQLAlchemy 将 JSON 发布到数据库
- centos - Centos iptables 显示规则但没有安装服务