gpt4 book ai didi

python - 如何获取外键对象以在 django rest 框架中显示完整对象

转载 作者:行者123 更新时间:2023-12-04 14:31:21 27 4
gpt4 key购买 nike

我有一个用 django_rest_framework 构建的 Django 后端.我目前有一个对象是外键。当我发出一个 API 请求来获取一个对象时,它会显示外键 id 和仅 id。我希望它显示整个对象,而不仅仅是外键的 id。不知道该怎么做,因为它并没有在文档中真正展示如何做到这一点。

这是代码:

浏览页面:

from users.models import Profile
from ..serializers import ProfileSerializer
from rest_framework import viewsets

class ProfileViewSet(viewsets.ModelViewSet):
queryset = Profile.objects.all()
lookup_field = 'user__username'
serializer_class = ProfileSerializer

有一个引用用户的用户外键。

网址:
from users.api.views.profileViews import ProfileViewSet
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'', ProfileViewSet, base_name='profile')
urlpatterns = router.urls

序列化器:
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = (
'id',
'user',
'synapse',
'bio',
'profile_pic',
'facebook',
'twitter'
)

这是它的样子:
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
{
"id": 1,
"user": 3,
"bio": "software engineer",
"profile_pic": "http://127.0.0.1:8000/api/user/profile/profile_pics/allsum-logo-1.png",
"facebook": "http://www.facebook.com/",
"twitter": "http://www.twitter.com/"
}
]

最佳答案

使用 depth=1 在您的 Meta 序列化器类,

class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = (
'id',
'user',
'synapse',
'bio',
'profile_pic',
'facebook',
'twitter'
)
depth = 1

关于python - 如何获取外键对象以在 django rest 框架中显示完整对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56142751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com