我的models.py如下,
id = models.AutoField(primary_key=True)
user = AutoOneToOneField(User, primary_key=False,default=1)
member_name = models.CharField(max_length=25, blank=False, default='')
ph_no = models.CharField(max_length=25, blank=False, default='')
我对GET& amp;的观点。 POST请求如下,
Class MemberList(generics.ListAPIView):
queryset = members.objects.all()
serializer_class = MemberSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
class MemberCreate(generics.CreateAPIView):
queryset = members.objects.all()
serializer_class = MemberSerializer
permission_classes = (permissions.IsAdminUser,)
现在创建数据POST请求时工作正常,我提供的用户值为“1或2或3等”,具体取决于django默认用户模块,并且已经创建了这些用户。
现在当我做GET请求时,它再次只返回用户ID的数字1或2等。
我有什么方法可以使用某种方法覆盖并获取用户名而不是我的GET请求中的用户ID
答案 0 :(得分:2)
您可以向序列化工具添加两个字段user_id
和user_name
。并指定write_only
和read_only
参数仅将user_id
用于POST或PUT,并将user_name
用于GET请求:
class MemberSerializer(serializers.ModelSerializer):
user = serializers.PrimaryKeyRelatedField(write_only=True)
user_name = serializers.CharField(source='user.username', read_only=True)
class Meta:
fields = ('user', 'user_name')