Как совместить 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
Другие вопросы по тегам