Как совместить select_related() и value()?
Мы знаем, что есть метод value() QuerySet, когда есть посторонний ключ (например, автор), это приводит к следующему:
[{ 'author_id':3, ... }, ...]
Я хочу результат как:
[{ 'author':{'name':'dave',...}, ... }, ...]
и я попытался выбрать select_related, но values () не будет отображать детали постороннего ключа, что мне делать?
2 ответа
Решение
AFAIK, Django не имеет встроенной поддержки для этого. select_related
никогда не изменяет результат набора запросов, только количество запросов при доступе к связанному объекту.
Вы можете использовать DjangoFullSerializer, чтобы получить нечто похожее на то, что вы хотите.
Реализуйте метод Unicode для каждой модели и распечатайте его.
class Book(..):
title = models.CharField(..)
color = models.CharField(...)
author = models.ForeignKey('Author')
...
def __unicode__(self):
return u"%s %s %s" %(title, color, author)
class Author(...):
name = models.CharField(...)
...
def __unicode__(self):
return name