如何用django queryset中的关联值替换外键
How to replace foreign key by its associated value in django queryset
我是 django 的新手,我需要你的帮助!
我在 javascript.
中写了一个查询数据库的 api/route 视图和 return 一个 JSON 到我的获取函数
有没有办法查询数据库并取回外键被其关联值替换的查询集?
虽然我可以使用 ModelName.objects.select_related( 'field ')
,但我不明白它是如何工作的。
如果您对实现目标的更好方法有解决方案或建议,请提前致谢!
伪代码中的上下文:
// HTML //
- 按钮点击函数get_list_of_data
// JS //
函数get_list_of_data:
获取路由 djangoURL
将响应转换为 JSON
遍历 JSON 以填充 HTLM div
// Django //
使用ModelName.objects.filter(name = name)获取查询集中的数据列表
使用 serializers.serialize(json, ...") 从 Queryset
中获取 JSON
return JsonResponse (json_query)
如果我很好地理解了这个问题,当你序列化一个定义了 ForeignKey
字段的模型时,你只会在 JSON 响应中得到 id
值,但你想得到返回整个对象(不仅是数字)。
这样做的方法是专门为该 ForeignKey
模型编写序列化程序,然后在您尝试获取的模型的序列化程序中使用它。
您尚未提供任何代码,但这里有一些可能对您有所帮助的示例:
class SecondModelSerializer(serializers.ModelSerializer):
class Meta:
model = SecondModel
fields = '__all__'
class FirstModelSerializer(serializers.ModelSerializer):
foreign_key_field = SecondModelSerializer()
class Meta:
model = FirstModel
fields = ('id', 'foreign_key_field', 'field1', 'field2')
在您的 FirstModelSerializer
中,您明确告诉 Django 使用 SecondModelSerializer
作为您的 ForeignKey
字段(我将其命名为 foreign_key_field
)。这样 Django 将知道如何序列化该字段而不是仅返回 id
值。
我是 django 的新手,我需要你的帮助!
我在 javascript.
中写了一个查询数据库的 api/route 视图和 return 一个 JSON 到我的获取函数有没有办法查询数据库并取回外键被其关联值替换的查询集?
虽然我可以使用 ModelName.objects.select_related( 'field ')
,但我不明白它是如何工作的。
如果您对实现目标的更好方法有解决方案或建议,请提前致谢!
伪代码中的上下文:
// HTML //
- 按钮点击函数get_list_of_data
// JS //
函数get_list_of_data:
获取路由 djangoURL
将响应转换为 JSON
遍历 JSON 以填充 HTLM div
// Django //
使用ModelName.objects.filter(name = name)获取查询集中的数据列表
使用 serializers.serialize(json, ...") 从 Queryset
中获取 JSONreturn JsonResponse (json_query)
如果我很好地理解了这个问题,当你序列化一个定义了 ForeignKey
字段的模型时,你只会在 JSON 响应中得到 id
值,但你想得到返回整个对象(不仅是数字)。
这样做的方法是专门为该 ForeignKey
模型编写序列化程序,然后在您尝试获取的模型的序列化程序中使用它。
您尚未提供任何代码,但这里有一些可能对您有所帮助的示例:
class SecondModelSerializer(serializers.ModelSerializer):
class Meta:
model = SecondModel
fields = '__all__'
class FirstModelSerializer(serializers.ModelSerializer):
foreign_key_field = SecondModelSerializer()
class Meta:
model = FirstModel
fields = ('id', 'foreign_key_field', 'field1', 'field2')
在您的 FirstModelSerializer
中,您明确告诉 Django 使用 SecondModelSerializer
作为您的 ForeignKey
字段(我将其命名为 foreign_key_field
)。这样 Django 将知道如何序列化该字段而不是仅返回 id
值。