擅长:python、mysql、java
<pre><code># First, define a manager subclass
class TripManager(models.Manager):
def get_queryset(self):
length= self.tourtemplate.length
start= self.start
end=start+ timedelta(days=length)
return super(TripManager, self).get_queryset().filter(date__range=[start, end])
class Trip(models.Model):
objects = models.Manager() # The default manager.
current_trip = TripManager() # New manager
</code></pre>
<p>现在,您可以拨打:</p>
^{pr2}$
<p>从中可以得出两个结论:</p>
<ol>
<li>您在模型中定义的函数只能在该模型的实例(函数所在的实例)上调用。在</li>
<li>由于第1点,在您的案例中需要自定义模型管理器。从这个<a href="https://docs.djangoproject.com/en/1.8/topics/db/managers/#custom-managers" rel="nofollow">link</a>中了解他们。您的默认管理器由调用Model.objects.all()如果要更改或修改defualt管理器返回的queryset,那么定义一个自定义管理器就很方便了。在</li>
</ol>
<p>尝试上述解决方案。希望有帮助:)</p>