英文:
combine values with select_related
问题
我有两个模型,"Product" 和 "user",并且 post 模型有一个指向 user 的外键。我想要查询帖子并与用户联接,只获取 "username" 和 "name" 字段。
我尝试使用以下代码:
Product.objects.values('id', 'title', 'user__username', 'user__name')
我得到了以下结果:
{
id,
title,
username,
name
}
但是我想要类似这样的结果:
{
id,
title,
user:{
username,
name
}
}
英文:
I have to models "Product" and "user" and post model has user foreignKey I want to query posts join with user with only ("username","name) fields
I tried to use
Product.objects.values('id', 'title',"user__username","user__name")
and i got
{
id,
title,
username,
name
}
but i want something like this
{
id,
title,
user:{
username,
name
}
}
答案1
得分: 1
你可以使用以下代码:
Product.objects.annotate(user_info=JSONObject(username="user__username", name="user__name")).values("id", "title", "user_info")
新的键(user_info)不应与你的模型键冲突。
如果你使用drf:
class ProductSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
fields = [
"id",
"title",
"user",
]
请注意,这只是代码的翻译部分。
英文:
you can use this
Product.objects.annotate(user_info=JSONObject(username="user__username", name="user__name")).values("id", "title", "user_info")
New key (user_info) should not be in conflict with your model keys
If you use drf:
class ProductSerializer(serializers.ModelSerializer):
user=UserSerializer()
class Meta:
fields = [
"id",
"title",
"user",
]
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论