简体   繁体   English

如何将原始Sql查询转换为Django模型

[英]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: 只需要两个步骤:

  1. Create a ManyToManyField fields movieActiveDays for TheaterShowTimings . 创建一个ManyToManyField领域movieActiveDaysTheaterShowTimings
  2. Make query with the new movieActiveDays field. 使用新的movieActiveDays字段进行查询。
Model definition 型号定义
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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM