2016-02-09 15 views
8

こんにちは、私はジャンゴに複数のフィールドを連結したいのですが、でもこの単純なコードなし属性「resolve_expression」がありません:ジャンゴ注釈を付ける()エラーはAttributeError:「CharFieldです」オブジェクトが

Project.objects.annotate(
     companyname=Concat('company__name',Value('ahoj')),output_field=CharField()  
    ) 

は私にエラーを与える:

AttributeError: 'CharField' object has no attribute 'resolve_expression' 

トレースバック:

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' 

答えて

15

あなたは間違った場所に閉じ括弧を持っています。 output_fieldContcatの引数であり、annotateの引数ではありません。それは次のようになります。

Project.objects.annotate(
    companyname=Concat('company__name', Value('ahoj'), output_field=CharField()),  
) 
+1

たわごとああ。ありがとう。彼らはドキュメントの中に括弧を入れて本当に悪い例があります。 https://docs.djangoproject.com/en/1.9/ref/models/database-functions/#concat '.annotate(SCREEN_NAME =連結方式( '名前'、V( '(')、 'goes_by'、V( ')')、output_field = CharField())) ' – Adam

+0

はい、私は、ドキュメントの例が読みにくいことに同意します。フォーマットを変更するためにプルリクエストを開いた場合、私はそれが受け入れられるだろうと確信しています。 – Alasdair

関連する問題