我有以下Django查询:
AUSTF = TSF.objects.filter(FKToT__FKToUser=request.user).values('FKToT__dNm').distinct()
AUSTU = TSU.objects.filter(FKToT__FKToUser=request.user).values('FKToT__dNm').distinct()
AUSTJS = JSP.objects.filter(FKToT__FKToUser=request.user).values('FKToT__dNm').distinct()
这将产生具有相同返回值的输出,例如:
123.456.789
website.com
123.456.789
website.com
我要提取所有three objects
,并删除所有重复项,然后再输出到模板中。 distinct()
方法对单个对象执行此操作,但在模板中输出时不对所有对象执行此操作。
我认为将这三个对象附加到元组可能可行,但这还没有解决。
有人可以帮忙吗?谢谢
我在想什么
ScannedT = set(AUsersScannedTldsForms,AUsersScannedTldsUrls,AUsersScannedTldsJS)
输出到模板
{% if ScannedT %}
{% for s in ScannedT %}
<li><span>{{ s.FKToTld__dNm }}</li>
{% endfor %}
{% else %}
wah
{% endif %}
答案 0 :(得分:0)
如果您的非重复用户使用不同的模型,则可以仅从该模型开始,而不必使用所有3个模型。我猜您对模型/字段名称有些困惑,但我会认为:
T.objects.filter(FKtoUser=request.user).values('dNm').distinct()
将完成此任务。除非有更深层次的原因,否则我就缺少您为什么要从其他3种模型开始的信息了。
答案 1 :(得分:0)
您可以转换为列表,然后放入一个集合中,这样可以消除重复项。
AUSTF = TSF.objects.filter(FKToT__FKToUser=request.user).values('FKToT__dNm').distinct()
AUSTU = TSU.objects.filter(FKToT__FKToUser=request.user).values('FKToT__dNm').distinct()
AUSTJS = JSP.objects.filter(FKToT__FKToUser=request.user).values('FKToT__dNm').distinct()
# convert to 3 lists
austf_list = list(AUSTF.values_list('FKToT__dNm', flat=True))
austu_list = list(AUSTU.values_list('FKToT__dNm', flat=True))
austjs_list = list(AUSTJS.values_list('FKToT__dNm', flat=True))
# combine all 3 lists, then convert to a set (which eliminates duplicates)
ScannedT = set(austf_list + austu_list + austjs_list)