簡體   English   中英

如何將原始Sql查詢轉換為Django模型

[英]How to convert the Raw Sql query to Django Model

我的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

我的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')

上面的views.py中的查詢工作正常。 但是,我想將其轉換為Django查詢集。 請幫助我,我堅持將原始SQL查詢轉換為queryset。

提前致謝。

您可以通過使用ManyToManyField來實現。

只需要兩個步驟:

  1. 創建一個ManyToManyField領域movieActiveDaysTheaterShowTimings
  2. 使用新的movieActiveDays字段進行查詢。
型號定義
TheaterShowTimings.objects.filter(movieActiveDays__date='2016-12-19').distinct()

查詢:

 TheaterShowTimings.objects.filter(movieActiveDays__date='2016-12-19').distinct() 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM