Django annotate()错误AttributeError:'CharField'对象没有属性'resolve_expression'

Ada*_*dam 14 python django

您好我想将更多字段连接到django,但即使是这个简单的代码:

    Project.objects.annotate(
        companyname=Concat('company__name',Value('ahoj')),output_field=CharField()    
    )
Run Code Online (Sandbox Code Playgroud)

给我一个错误:

AttributeError: 'CharField' object has no attribute 'resolve_expression'
Run Code Online (Sandbox Code Playgroud)

追溯:

  File "/root/MUP/djangoenv/lib/python3.4/site-packages/django/db/models/manager.py", line 122, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/root/MUP/djangoenv/lib/python3.4/site-packages/django/db/models/query.py", line 908, in annotate
    clone.query.add_annotation(annotation, alias, is_summary=False)
  File "/root/MUP/djangoenv/lib/python3.4/site-packages/django/db/models/sql/query.py", line 986, in add_annotation
    annotation = annotation.resolve_expression(self, allow_joins=True, reuse=None,
AttributeError: 'CharField' object has no attribute 'resolve_expression'
Run Code Online (Sandbox Code Playgroud)

Ala*_*air 24

你在错误的地方有一个右括号.这output_field是一个论据Contcat,而不是annotate.它应该是:

Project.objects.annotate(
    companyname=Concat('company__name', Value('ahoj'), output_field=CharField()),    
)
Run Code Online (Sandbox Code Playgroud)

  • 妈的。谢谢。他们有一个非常糟糕的例子,文档中有括号。https://docs.djangoproject.com/en/1.9/ref/models/database-functions/#concat `.annotate(screen_name=Concat('name', V(' ('), 'goes_by', V(') )'), output_field=CharField()))` (2认同)