【发布时间】:2017-09-18 12:32:06
【问题描述】:
假设我有两个模型,一个引用另一个:
class Shelf(models.Model):
pass
class Book(models.Model):
shelf = models.ForeignKey(Shelf)
我想在 Book 实例的 QuerySet 上使用 values():
In [1]: Book.objects.create(shelf=Shelf.objects.create())
Out[1]: <Book: Book object>
In [2]: Book.objects.values()
Out[2]: [{'id': 1, 'shelf_id': 1}]
问题是返回的字典只包含相关Shelf 实例的主键,而不是实例本身。有没有办法在单个查询中获取实际实例?例如:
In [2]: Book.objects.values()
Out[2]: [{'id': 1, 'shelf': <Shelf: Shelf object>}]
我使用values() 的原因是我可以合并两个用于不同模型的查询集,我想对它们进行排序并呈现到视图中的单个表中。
【问题讨论】:
-
“实际模型”是什么意思?调用
values()后可以在字典中设置型号名称:book_vals = Books.objects.all(); book_vals['model_name'] = Book.__name__ -
@alfonso.kim 我想获取模型实例作为字典中的值。我更新了问题以更清楚。
标签: django django-orm