我有一个模型叫做GameProfile
,这是一对一的关系User
模型。我用了HyperlinkedModelSerializer
贯穿我所有的设计。
For the GameProfile
,用户字段应该是查询的主键,它是唯一的但我没有将其设置为主键。有没有办法改变 django 序列化器的默认行为以指向user__id
作为主键并始终使用它来检索详细视图中的配置文件?
class GameProfileSerializer(serializers.HyperlinkedModelSerializer):
"""
"""
user_pk = serializers.Field(source='user.id')
class Meta:
model = GameProfile
class GameProfileViewSet(viewsets.ModelViewSet):
"""
"""
queryset = GameProfile.objects.all()
serializer_class = GameProfileSerializer
def get_queryset(self):
""" get_queryset
"""
queryset = super(GameProfileViewSet, self).get_queryset()
if not queryset.exists():
raise Http404
if self.request.user.is_authenticated() and not self.request.user.is_superuser:
return queryset.filter(user=self.request.user)
return queryset
请指教,提前谢谢:)
假设你的GameProfile
模型看起来像:
class GameProfile(models.Model)
user = models.OneToOneField('User')
序列化器将是:
class GameProfileSerializer(serializers.HyperlinkedModelSerializer):
user_id = serializers.Field(source='user.id')
class Meta:
model = GameProfile
Set the .lookup_field
正确地在视图上添加属性:
lookup_field = 'user_id'
网址将是:
/gameprofile/<user_id>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)