Как совместить select_related () и value ()? - PullRequest
4 голосов
/ 31 июля 2009

Мы знаем, что есть метод value () из QuerySet, когда есть иностранный ключ (например, автор), он имеет вид:

[{ 'author_id':3, ... }, ...]

Я хочу получить результат как:

[{ 'author':{'name':'dave',...}, ... }, ...]

и я попытался выбрать select_related, но values ​​() не будет показывать детали постороннего ключа, что мне делать?

Ответы [ 2 ]

1 голос
/ 31 июля 2009

AFAIK, Django не имеет встроенной поддержки для этого. select_related никогда не изменяет результат набора запросов, только количество запросов при доступе к связанному объекту.

Вы можете использовать DjangoFullSerializer , чтобы получить что-то похожее на то, что вы хотите.

0 голосов
/ 31 июля 2009

Реализуйте метод Юникод для каждой Модели и распечатайте его.

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
...