为了账号安全,请及时绑定邮箱和手机立即绑定

列出特定电影院的所有电影 - 外键 Django

列出特定电影院的所有电影 - 外键 Django

RISEBY 2021-09-11 10:07:59
我是 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本身)。


查看完整回答
反对 回复 2021-09-11
  • 1 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信