簡體   English   中英

從 Django values() 獲取外鍵值

[英]Getting foreign key values from Django values()

我正在使用 Django 模型獲取數據對象

tabledata=Entity.objects.filter(quarter=1)

使用這種方法,我可以像這樣提取外鍵指定的對象的值

tabledata[0].creator.name

但是,當我將代碼更改為

tabledata=Entity.objects.filter(quarter=1).values()

我只能提取外鍵值,但不能提取與外鍵鏈接的對象數據的值。 就像是

tabledata[0][creator][name]  does not work

有沒有辦法以這種方式提取值?

您可以像這樣在.values()使用查找:

entities = Entity.objects.filter(quarter=1).values('creator__name')
print(entities[0]['creator__name'])

如果需要,您也可以獲取其他字段:

Entity.objects.filter(quarter=1).values('creator__name', 'direct_field', 'another_direct_field')

這就是為什么使用的原因之一.values() [Django的DOC]是不是一個好主意:它侵蝕模型的邏輯層。

您可以使用.annotate(…) [Django-doc]將名稱添加到值中:

from django.db.models import F

tabledata = Entity.objects.filter(quarter=1).annotate(
    creator_name=F('creator__name')
).values()

然后它將出現在字典中的'creator_name'鍵下。

但是使用.values()通常只在特定用例中有用。 例如對特定值或在子查詢中的GROUP BY 如果您想為給定模型制作 JSON,您應該使用序列化程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM