2015-06-15 15 views
5

atar :Django 1.8 Basit tablo var AttributeError

Author.objects.annotate(
    name_lower=Func(F('name'), function='lower') 
).distinct('name_lower') 

Ama alıyorum hatası:

Traceback (most recent call last): 
    File "/opt/venv/lib/python3.4/site-packages/django/db/models/query.py", line 138, in __repr__ 
    data = list(self[:REPR_OUTPUT_SIZE + 1]) 
    File "/opt/venv/lib/python3.4/site-packages/django/db/models/query.py", line 162, in __iter__ 
    self._fetch_all() 
    File "/opt/venv/lib/python3.4/site-packages/django/db/models/query.py", line 965, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/opt/venv/lib/python3.4/site-packages/django/db/models/query.py", line 238, in iterator 
    results = compiler.execute_sql() 
    File "/opt/venv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 829, in execute_sql 
    sql, params = self.as_sql() 
    File "/opt/venv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 381, in as_sql 
    distinct_fields = self.get_distinct() 
    File "/opt/venv/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 545, in get_distinct 
    result.append("%s.%s" % (qn(alias), qn2(target.column))) 
AttributeError: 'Func' object has no attribute 'column' 

ama yazarken:

django.core.exceptions.FieldError: 
Cannot resolve keyword 'something' into field. 
Choices are: id, name, name_lower, src_id 
+0

Does Author.objects.annotate (name_lower = Func (F ('name'), function = 'düşük')) 'bir istisna mı yükseltiyorsunuz? – Evert

+0

Bu bana Django'da bir hata gibi görünüyor. Http://code.djangoproject.com adresinde bu ayrıntılarla bir bilet oluşturabilir misiniz? – knbk

+0

@knbk Bildirdim: https://code.djangoproject.com/ticket/24986 – WBAR

cevap

1

Thx @knbk için,

bu

geçici çözüm Django Bug #24986

: Ben bir hata alıyorum

Author.objects.annotate(
    name_lower=Func(F('name'), function='lower') 
).distinct('something') 

Bunun için:

Author.objects.annotate(
    name_lower=Func(F('name'), function='lower') 
).values('name_lower').distinct() 
İlgili konular