我想将外国数据(子模型)导入父模型查询集。
我可以将外国数据添加到父数据,但它是 JSON 。我想将 JSON 转换为queryset,因为 get_queryset()会返回 model / queryset 。
我google了很多但却找不到任何帮助。
class Parent(models.Model):
parent_name = models.TextField()
child = models.ForeignKey(Child, related_name="+", on_delete=models.CASCADE, null=True)
class Child(models.Model):
child_name = models.TextField()
class ParentViewSet(viewsets.ModelViewSet):
queryset = Parent.objects.all()
serializer_class = ParentInfoSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ['parent_name']
def get_queryset(self):
response = []
parent_name = self.request.GET.getlist("parent_name")[0]#
parent_queryset =
Parent.objects.filter(parent_name=parent_name)
for par_queryset in parent_queryset:
parent_result = self.serializer_class(phy_queryset).data
child_id = physician_info_result["child"]
child_instance = Child.objects.get(pk=child_id)
child_result = ChildSerializer(child_instance).data
parent_result["child"] = child_result
response.append(parent_result)
return response
网址
http://localhost:9000/api/parent?parent_name=xyz
响应输出是:
[{ “parent_name”:“xyz”, “孩子”:[{ “id”:1 “child_name”:“abc” }] }]
但是在输出之上它是 JSON 我不想要的。我希望输出到 queryset / model 。
注意 :Queryset输出应包含外部查询集。
答案 0 :(得分:2)
您可以只替换子到序列化程序的默认字段,它可以按您的意愿工作。
class ParentSerializer(models.Model):
child = ChildSerializer()
class Meta:
models = Parent
fields = ('parent_name', 'child')
您也不需要覆盖get_queryset
方法。