超链接模型序列化程序的 URL 返回具有自定义 PK 的模型的"{ "detail" : "not found." }"


class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
website = models.URLField(max_length=30, null=True, blank=True)
class ProfileViewSet(viewsets.ModelViewSet):
lookup_field = 'user'
serializer_class = ProfileSerializer
queryset = Profile.objects.all()
class ProfileSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Profile
fields = ['website', 'user', 'url']
extra_kwargs = {
'url': {'view_name': 'profile-detail', 'lookup_field': 'user'},
'user': {'lookup_field': 'username', 'view_name': 'user-detail'}
}
router = routers.DefaultRouter()
router.register('profile/', ProfileViewSet, basename='profile')
urlpatterns = [
path('/', include(router.urls)),
]

上面的代码以 JSON 格式列出了所有配置文件及其 URL。但是,当单击某个 URL 时,它会返回"{"详细信息":"未找到"},而不是显示配置文件的详细信息。知道吗?谢谢!

  • 姜戈版本:3.0.4
  • Django Rest Framework 版本:3.11.0

因为序列化程序中定义的模型是Profile的,并且您的查询集使用不同的模型,即Retailer

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

最新更新