我有一个视图来列出某个模型(我们称之为class A
),如下所示:
class BaseListView(ListView, MultipleObjectMixin):
http_method_names = ['get']
order_field = None
def get_paginate_by(self, queryset):
session_manager = SessionManager(self.request.session)
return session_manager.paginate_by.get()
def get_context_data(self, **kwargs):
context = super(BaseListView, self).get_context_data(**kwargs)
session_manager = SessionManager(self.request.session)
session_manager.paginate_by.set_to(context)
return context
到目前为止,这种观点正是我们所需要的。现在我要将它检索的对象列表与另一个对象列表(class B
)进行比较。在
类A
和B
的对象都有一个主键及其名称。在
我想检查class A
中的任何对象是否与class B
中的任何对象具有相同的name
(主键)。如果B
中有A
的实例,我想添加一个特定的参数或类似is_in_B=True
的参数。在
我需要这样做,这样我就可以在模板中以不同的方式表示A
的这些实例。在
我怎么能这么做?在
这是我目前自己想出的:
^{pr2}$我不太确定这是一个合适的方法。在
另外,我应该如何修改我的类返回的queryset
,以便我可以指出class A
的哪些实例与class B
的任何实例共享相同的name
?在
您可以annotate your queryset with a conditional expression来实现这一点:
您的queryset对象现在将有一个
is_in_b
属性。在如果B对象列表很小,这将很好地工作。如果它很大,那么我不确定它是否非常有效,您可能需要进一步开发它,看看是否可以在数据库中直接执行检查(在B中是A)(可能需要原始SQL)。在
相关问题 更多 >
编程相关推荐