4

We know there is a values() method of QuerySet, when there is a foreign key (author, for example), it result like:

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

I want a result like:

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

and I tried select_related, but values() won't show the detail of the foreign key, what can I do?

Tom Carrick
  • 6,349
  • 13
  • 54
  • 78
fallhunter
  • 551
  • 1
  • 9
  • 16

2 Answers2

1

AFAIK, Django doesn't have builtin support for that. select_related never changes the outcome of a queryset, only the number of queries when you access related object.

You could use DjangoFullSerializers to get something that is similar to what you want.

Benjamin Wohlwend
  • 30,958
  • 11
  • 90
  • 100
0

Implement the unicode method of each Model, and print it.

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
Josh Smeaton
  • 47,939
  • 24
  • 129
  • 164