此代码效果很好
// Your activity's onActivityResult()
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
List<Fragment> lsActiveFragments = getSupportFragmentManager().getFragments();
for (Fragment fragmentActive : lsActiveFragments) {
if (fragmentActive instanceof NavHostFragment) {
List<Fragment> lsActiveSubFragments = fragmentActive.getChildFragmentManager().getFragments();
for (Fragment fragmentActiveSub : lsActiveSubFragments) {
if (fragmentActiveSub instanceof FragWeAreInterestedIn) {
fragmentActiveSub.onActivityResult(requestCode, resultCode, data);
}
}
}
}
}
但是现在我下面有这样的列表,并且想要动态地进行过滤。
from django.db.models import Q
filtered = Article.objects.filter(Q(authers__id=2) | Q(issues__id=1) | Q(issues__id=3) )
如何进行查询?
答案 0 :(得分:1)
如果仅具有一个字段的值列表,则最好使用'in' filter:
ids = [1,2,3]
articles = Article.objects.filter(authers__id__in=ids)
否则,要迭代创建“ OR”过滤器:
from django.db.models import Q
filters = Q()
ids = [1, 2, 3]
for pk in ids:
filters |= Q(authers__id=pk)
articles = Article.objects.filter(filters)
可用于通过多个模型字段和值进行动态过滤。
答案 1 :(得分:1)
在同一字段中查询不同的值(或条件),可以使用__in键。
possibilities = [1,2,3]
Article.objects.filter(field__in=posibilities)
对于动态查询,您还可以将** kwargs传递给过滤方法:
query_key = 'your_field_name__in'
Article.objects.filter(**{query_key:[1,2,3]#your search value})
您可以将多个模型字段添加到kwargs参数中:
query = {'field_1':value_1,'field_2':value_2,'field_3__contains':value_3}#for example
Article.objects.filter(**query)