如何结合select_related()和()的值?(How to combine select_r

2019-06-27 08:06发布

我们知道有查询集,值()方法时,有一个外键(作家,例如),就会导致这样的:

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

我要像一个结果:

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

我试图select_related,但值()将不会显示外键的细节,我该怎么办?

Answer 1:

据我所知,Django不具有该内置支持。 select_related永远不会改变一个查询集的结果,只有当你访问对象相关的查询数。

你可以使用DjangoFullSerializers得到的东西类似于你想要什么。



Answer 2:

实现每个型号的统一方法,并打印出来。

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


文章来源: How to combine select_related() and value()?