Может кто-нибудь сказать мне, почему этот запрос будет обрабатываться, только если я жестко наберу код phone_type
#model.py
class ClientPhone(models.Model):
client = models.ForeignKey(Client, editable=False)
...
phone_type = models.CharField(max_length=5, choices=PHONE_CHOICES)
number = models.CharField(max_length=24)
# models.py
PHONE_CHOICES = (
('home', 'Home'),
('home2', 'Home 2'),
('mobi', 'Mobile'),
('mobi2', 'Mobile 2'),
('work', 'Work'),
('work2', 'Work 2'),
)
# views.py
phones = [ClientPhone.objects.filter(client=i_clientKEY).filter(phone_type=k).latest('created') for k, v in PHONE_CHOICES]
# shell
>>> from client.models import ClientPhone
>>> phones = [ClientPhone.objects.filter(client=1).filter(phone_type=k).latest('created') for k, v in PHONE_CHOICES]
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 395, in latest
return obj.get()
File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 341, in get
% self.model._meta.object_name)
DoesNotExist: ClientPhone matching query does not exist.
>>> phones = [ClientPhone.objects.filter(client=1).filter(phone_type='home').latest('created') for k, v in PHONE_CHOICES]
>>> phones
[<ClientPhone: ClientPhone object>, <ClientPhone: ClientPhone object>, <ClientPhone: ClientPhone object>, <ClientPhone: ClientPhone object>, <ClientPhone: ClientPhone object>, <ClientPhone: ClientPhone object>]