【发布时间】:2014-10-17 05:33:24
【问题描述】:
我有一个 Order 模型和一个名为 OrderManager 的自定义模型管理器,如下所示。
class Order(models.Model):
# Model fields are declared here.
...
objects = OrderManager()
all_objects = models.Manager()
class OrderManager(models.Manager):
def get_queryset(self):
return super(OrderManager, self).get_queryset().filter(Q(x='y') | Q(x='y'))
我通过向查询集添加另一个过滤器来更新OrderManager 类,结果证明是新的实现
class OrderManager(models.Manager):
def get_queryset(self):
return super(OrderManager, self).get_queryset().filter(~Q(order_status='Cancelled'), Q(x='y') | Q(x='y'))
但是,当我使用更新的管理器从 Order 模型中检索数据时,它会忽略更改并仍然带来 order_status 为“已取消”的对象。
orders = Order.objects.all() # Retrieves cancelled orders as well.
另一方面,显式应用最后一个附加过滤器:
orders = Order.objects.filter(~Q(order_status='Cancelled') # Ignores the cancelled orders.
是迁移问题还是什么?我觉得我在某个地方犯了一个愚蠢的错误(可能与此代码无关),但我只是失明了。任何建议都非常感谢。
ps:我在 Webfaction 上使用 Django 1.5.5。
【问题讨论】:
标签: django django-models