2016-02-09 19 views
8

हैलो मैं Django में और अधिक क्षेत्रों को श्रेणीबद्ध करना चाहते हैं, लेकिन फिर भी इस सरल कोड:Django व्याख्या() त्रुटि AttributeError: 'CharField' ऑब्जेक्ट कोई विशेषता 'resolve_expression'

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

मुझे एक त्रुटि देता है:

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

Traceback:

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 = Concat ('name', V ('('), 'goes_by', V (')'), output_field = CharField())) – Adam

+0

हां, मैं मानता हूं कि दस्तावेज़ों में उदाहरण पढ़ने के लिए मुश्किल है। यदि आपने स्वरूपण को बदलने के लिए पुल अनुरोध खोला है तो मुझे पूरा यकीन है कि इसे स्वीकार किया जाएगा। – Alasdair

संबंधित मुद्दे