我是 Django 的新手,我有一个关于模型和外键的问题。我有两个模型:电影和电影。一个Cinema可以有多个电影,所以我在Movie模型中放置了cinema的外键。class Cinema(models.Model): name = models.CharField(max_length=255) address = models.CharField(max_length=255)class Movie(models.Model): title = models.CharField(max_length=255) description = models.CharField(max_length=255) posting_cinema = models.ForeignKey('cinemas.Cinema', on_delete=models.CASCADE, null=True)现在我想列出特定电影院的所有电影。我该怎么做?这个想法是这样的:用户点击一个电影院,它会打开一个包含电影院详细信息和“看电影”按钮的页面。如果用户单击此按钮,则会打开一个新页面,我希望在那里列出该特定电影院的电影。我试图找出一些解决方案,但遗憾的是我被卡住了。我在想 Movie.objects.filter(#something) 但我不确定
1 回答
SMILET
TA贡献1796条经验 获得超4个赞
对于给定的,Cinema您可以使用:
some_cinema.movie_set.all()
或者你可以给出ForeignKey一个更有意义的名字来反向查询:
class Movie(models.Model):
title = models.CharField(max_length=255)
description = models.CharField(max_length=255)
posting_cinema = models.ForeignKey(
'cinemas.Cinema',
on_delete=models.CASCADE,
null=True,
# here we give the reverse relation a name
related_name='movies'
)
然后你可以查询这个:
some_cinema.movies.all()
另一种方法是基于 过滤ForeignKey,例如:
Movie.objects.filter(posting_cinema=some_cinema)
或者如果你有电影院的主键:
Movie.objects.filter(posting_cinema__pk=some_cinema_pk)
(例如,这可以保存对Cinema对象的提取,如果您从不真正需要它Cinema本身)。
添加回答
举报
0/150
提交
取消