2009-07-31 4 views
4

Мы знаем, что есть метод() значение QuerySet, когда есть ForeignKey (автор, к примеру), то результат, как:Как совместить select_related() и value()?

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

Я хочу, чтобы результат как:

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

и я попробовал select_related, но values ​​() не будет отображать детали foreignkey, что мне делать?

+0

Для более новых версий Джанго (1.7+) см https://stackoverflow.com/questions/35595085/how-to-combine-select-related-and-value-2016/35598358#35598358 – Risadinha

ответ

1

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

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

+0

DjangoFullSerializers полезно , благодаря. – fallhunter

0

Внесите 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 
+0

снова прочитал ваш вопрос, я думаю, что я полностью пропустил отметку. –

+0

хорошо, спасибо вам все равно, вы дали отличный намек – fallhunter

Смежные вопросы