我在Django中有一个(重复检测)查询,我想申请几个模型:
Cooperation.objects.values('seo__slug').annotate(count=Count('id')).values('seo__slug).filter(count__gt=1)
Article.objects.values('seo__slug').annotate(count=Count('id')).values('seo__slug).filter(count__gt=1)
City.objects.values('seo__slug').annotate(count=Count('id')).values('seo__slug).filter(count__gt=1)
是否有编码概念,以便我可以循环执行此操作。 例如(伪代码,以下不起作用)
information_objects = ['Cooperation', 'Article', 'City']
for obj in information_objects:
obj.objects.values('seo__slug').annotate(count=Count('id')).values('seo__slug).filter(count__gt=1)
我希望我可以解决我的问题。 如果有人能告诉我Django是否支持这个概念,请告诉我。
答案 0 :(得分:1)
您可以使列表包含实际的类,然后您的代码将起作用:
information_objects = [Cooperation, Article, City]
如果您绝对需要根据字符串获取它们,可以从globals()
获取课程:
information_objects = [globals()[name] for name in ('Cooperation', 'Article', 'City')]
或使用getattr,如果它们在特定模块中:
information_objects = [getattr(the_module, name) for name in ('Cooperation', 'Article', 'City')]