我有Django模型属性__iter__
,返回生成器(迭代器),现在我想进一步将结果迭代器转换为queryset,这允许我对生成的查询集进行进一步过滤。
car = Car.objects.get(id=45)
# __iter__ returns Car objects
cars = car.__iter__()
cars.filter(name='abc') ?
上面会抛出错误,因为我无法过滤生成器(迭代器)。
此外,我不想将生成器(迭代器)转换为id的列表,我可以在Car.objects.filter()
关于如何解决上述问题的任何想法。
由于
答案 0 :(得分:0)
正如您所说,如果您的__iter__
方法返回一个生成器,则无法对其执行进一步的查询集方法。
一种选择是返回ID并使用id__in
过滤器,但您已经说过您不想这样做。
另一种选择是在Python而不是SQL中进行额外的过滤。
car = Car.objects.get(id=45)
# __iter__ returns Car objects
cars = car.__iter__()
cars = [c for c in cars in c.name='abc']
在不知道__iter__
做什么的情况下,我无法提供任何其他建议。