从django models中的用户ID获取用户名

时间:2017-08-28 12:45:24

标签: django django-models django-rest-framework

我的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

1 个答案:

答案 0 :(得分:2)

您可以向序列化工具添加两个字段user_iduser_name。并指定write_onlyread_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')