我尝试创建一个在django_filters中使用的查询集。
service_list = table1.objects.annotate(
Total=Sum(
Case(When(table1fk__table2fk__table3fk__table4field='XX', then=Table2.field),output_field=IntegerField())
)
)
我得到:
System check identified no issues (0 silenced).
October 15, 2018 - 16:24:15
Django version 2.1.2, using settings 'cobalt.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
Internal Server Error: /service/service
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 124, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/code/service/views.py", line 33, in ServiceEnseignant
Case(When(composition__type__cmtdtp__code='CM', then=Composition.NBHeures),output_field=IntegerField())
File "/usr/local/lib/python3.7/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/django/db/models/query.py", line 1008, in annotate
clone.query.add_annotation(annotation, alias, is_summary=False)
File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/query.py", line 988, in add_annotation
summarize=is_summary)
File "/usr/local/lib/python3.7/site-packages/django/db/models/aggregates.py", line 39, in resolve_expression
c = super().resolve_expression(query, allow_joins, reuse, summarize)
File "/usr/local/lib/python3.7/site-packages/django/db/models/expressions.py", line 597, in resolve_expression
c.source_expressions[pos] = arg.resolve_expression(query, allow_joins, reuse, summarize, for_save)
File "/usr/local/lib/python3.7/site-packages/django/db/models/expressions.py", line 921, in resolve_expression
c.cases[pos] = case.resolve_expression(query, allow_joins, reuse, summarize, for_save)
File "/usr/local/lib/python3.7/site-packages/django/db/models/expressions.py", line 856, in resolve_expression
c.condition = c.condition.resolve_expression(query, allow_joins, reuse, summarize, False)
File "/usr/local/lib/python3.7/site-packages/django/db/models/query_utils.py", line 95, in resolve_expression
clause, joins = query._add_q(self, reuse, allow_joins=allow_joins, split_subq=False)
File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/query.py", line 1287, in _add_q
split_subq=split_subq,
File "/usr/local/lib/python3.7/site-packages/django/db/models/sql/query.py", line 1217, in build_filter
raise FieldError('Related Field got invalid lookup: {}'.format(lookups[0]))
django.core.exceptions.FieldError: Related Field got invalid lookup: table3fk
我首先尝试在table1上定义@property来进行总和,这很有效,但是我需要对不同的XX总和求和以在视图中呈现小计,然后转到注释。
我希望它足够清楚。