Python Django外键查询

Python Django外键查询,python,django,Python,Django,我有一个这样的模型 Allmovie保存电影的名称, AllmovieTheater保存播放此电影的影院, 和AllMovieShowtime节省剧院的播放时间 class AllMovie(models.Model): link = models.URLField() title = models.CharField(max_length=100, null=True) releaseday = models.CharField(max_length=100, null

我有一个这样的模型
Allmovie
保存电影的名称,
AllmovieTheater
保存播放此电影的影院,
AllMovieShowtime
节省剧院的播放时间

class AllMovie(models.Model):
    link = models.URLField()
    title = models.CharField(max_length=100, null=True)
    releaseday = models.CharField(max_length=100, null=True)               
    def __unicode__(self):
        return '%s' % (self.title)

class AllMovieTheater(models.Model):
    allmovietheater  = models.ForeignKey(AllMovie,null=True,blank=True)
    movie_theater = models.CharField(max_length=255, null=True)     
    def __unicode__(self):
        return '%s' % (self.movie_theater)

class AllMovieShowtime(models.Model):
    theater = models.ForeignKey( AllMovieTheater, null=True,blank=True,related_name = 'theater' )
    movie = models.ForeignKey( AllMovie, null=True,blank=True,related_name = 'movie' )
    time = models.CharField(max_length=100, null=True)
    def __unicode__(self):
        return '%s' % (self.time)
例如: 电影《ABC》在超级剧场和男子剧场上映
我想知道超级剧场的演出时间

Movie  |      theater          |   showtime
 ABC        super theater           8:00
                                    9:30

Movie  |      theater          |  showtime
 ABC          man theater           8:00 
                                   10:00
但我不知道如何去质疑它。 我的查询有错误:

>>>obj = AllMovie.objects.get(title='ABC')  
<AllMovie: ABC>
>>>obj2 = allmovietheater_set.filter(movie_theater=’super theater')
[<AllMovieTheater: super theater>
>>>obj3 = obj2.theater_set.all()
AttributeError: 'QuerySet' object has no attribute 'theater_set'
obj=AllMovie.objects.get(title='ABC') >>>obj2=allmovietheater\u set.filter(影剧院=‘超级影剧院’) [ >>>obj3=obj2.theater\u set.all() AttributeError:“QuerySet”对象没有属性“theater\u set”
请教我谢谢

obj2是一个QuerySet对象

您应该像访问任何迭代器一样访问obj2的元素

对于您的情况,获取obj3的一种可能方式是:

obj3 = [x.theater_set.all() for x in obj2]

你有没有试过这样的方法:

AllMovieShowtime.objects.filter(movie__title="ABC",theater__movie_theater="super theater")

一部电影可以在多家影院放映,而一家影院放映多部电影。因此,“电影”模型和“影院”模型之间的关系应该是多对多关系,“放映时间”是用于控制这种关系的中间模型

class Movie(models.Model):
    link = models.URLField()
    title = models.CharField(max_length=100, null=True)
    releaseday = models.CharField(max_length=100, null=True)               
    def __unicode__(self):
        return '%s' % (self.title)

class Theater(models.Model):
    movies = models.ManyToManyField(Movie, null=True, blank=True, through="ShowTime")
    theater = models.CharField(max_length=255, null=True)     
    def __unicode__(self):
        return '%s' % (self.movie_theater)

class ShowTime(models.Model):
    theater = models.ForeignKey(Theater, null=True, blank=True)
    movie = models.ForeignKey(Movie, null=True, blank=True)
    time = models.CharField(max_length=100, null=True)
    def __unicode__(self):
        return '%s' % (self.time)
要了解电影“ABC”在影院“超级”的放映时间:

>>ShowTime.objects.filter(剧院、电影院、电影)
[, ]
>>>ShowTime.objects.filter(theater\uu theater=“super”,movie\uu title=“ABC”)[0]。时间
'8:00'
>>>ShowTime.objects.filter(theater\uu theater=“super”,movie\uu title=“ABC”)[1]。时间
'10:00'

谢谢!我编辑了许多关于south的文件,但是迁移花了很长时间,我不知道它是在运行还是应该关闭。你知道这个问题吗?
>>> ShowTime.objects.filter(theater__theater="super", movie__title="ABC")
[<ShowTime: ShowTime object>, <ShowTime: ShowTime object>]
>>> ShowTime.objects.filter(theater__theater="super", movie__title="ABC")[0].time
'8:00'
>>> ShowTime.objects.filter(theater__theater="super", movie__title="ABC")[1].time
'10:00'