可以說我正在獲取一系列的特定情節。 通過劇集編號獲得周圍劇集的最佳方式是什麼?查詢獲取對象周圍的物體
簡化模型:
class Episode(models.Model):
series = models.ForeignKey(Series)
number = models.IntegerField()
例如,第10集將取發作8-12。
第1集將獲取第1-5集。
可以說我正在獲取一系列的特定情節。 通過劇集編號獲得周圍劇集的最佳方式是什麼?查詢獲取對象周圍的物體
簡化模型:
class Episode(models.Model):
series = models.ForeignKey(Series)
number = models.IntegerField()
例如,第10集將取發作8-12。
第1集將獲取第1-5集。
這看起來像你只是把一系列的電視劇當作一集。如果是這樣的話,爲什麼不喜歡
Episode.objects.filter(series=some_series,number__gte=epnum-2, number__lte=epnum+2)
發現周圍情節epnum
情節,有特殊情況的時候epnum-2<=0
或epnum+2>Episode.object.filter(series=some_series).order_by('-number')[0].number
?
如果你想讓一個季節休息時的劇集有不同的處理方式,你需要做一些更復雜的事情,比如@Scott的建議。但除此之外,我相信這個簡單的解決方案就足夠了。在desfido的解決方案
大廈:
class EpisodeManager(models.Manager):
def get_near_objects(self, series, number):
return self.get_query_set().filter(
series=series,
number__gte=number-2,
number__lte=number+2)
use_for_related = True
然後在你的模型:
class Episode(models.Model):
series = models.ForeignKey(Series)
number = models.IntegerField()
objects = EpisodeManager()
現在,你可以使用:
Episode.objects.get_near_objects(series="Star Trek: The Original Series", number=7)
更妙的是,粘成一個經理這一點。 – 2010-11-01 05:19:50