[英]How to convert the Raw Sql query to Django Model
My models.py: 我的models.py:
class TheaterShowTimings(models.Model):
showname = models.CharField(max_length=100)
showtime = models.TimeField() # stores only time
theatershowtimingsid = models.CharField(primary_key=True, max_length=100)
def __str__(self):
return self.theatershowtimingsid
class MovieActiveDays(models.Model):
date = models.DateField() # stores single only date
moviedetails = models.ForeignKey(MovieDetails, on_delete=models.CASCADE)
theaterbase = models.ForeignKey(TheaterBase, on_delete=models.CASCADE)
activedayid = models.CharField(primary_key=True, max_length=100)
def __str__(self):
return self.activedayid
class ActiveShowTimings(models.Model):
TheaterShowTimings = models.ForeignKey(TheaterShowTimings, on_delete=models.CASCADE)
MovieActiveDays = models.ForeignKey(MovieActiveDays, on_delete=models.CASCADE)
activeshowid = models.CharField(primary_key=True, max_length=100)
def __str__(self):
return self.activeshowid
My views.py: 我的views.py:
show_name_list = TheaterShowTimings.objects.raw('SELECT distinct * FROM Book_TheaterShowTimings where theatershowtimingsid IN (select TheaterShowTimings_id from Book_ActiveShowTimings where MovieActiveDays_id IN (select activedayid from Book_MovieActiveDays where date = "2016-12-19")) order by showtime ASC')
The above query in views.py is working fine. 上面的views.py中的查询工作正常。 But, I want to convert it into a django queryset.
但是,我想将其转换为Django查询集。 please help me, I`m stuck at converting that raw sql query to queryset.
请帮助我,我坚持将原始SQL查询转换为queryset。
Thanks in advance. 提前致谢。
You can achieve this by making use of ManyToManyField
. 您可以通过使用
ManyToManyField
来实现。
Only two steps is needed: 只需要两个步骤:
ManyToManyField
fields movieActiveDays
for TheaterShowTimings
. ManyToManyField
领域movieActiveDays
为TheaterShowTimings
。 movieActiveDays
field. movieActiveDays
字段进行查询。 TheaterShowTimings.objects.filter(movieActiveDays__date='2016-12-19').distinct()
Query: 查询:
TheaterShowTimings.objects.filter(movieActiveDays__date='2016-12-19').distinct()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.