gpt4 book ai didi

Django:显示用户名而不是 ID,如何?

转载 作者:行者123 更新时间:2023-12-01 08:09:55 24 4
gpt4 key购买 nike

我有以下序列化程序类。

class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type', 'user')

列出所有配置文件时,用户字段会显示用户 ID。如何更改它以显示 user.username?我知道我的模型只是将它添加到我的元类中,但没有创建用户模型(它是 Django 的一部分)。在调用用户时如何告诉 Django 显示用户名而不是 id?

非常感谢。

最佳答案

两种显而易见的方法可以解决这个问题:

首先,您可以使用 dotted.notation 强制 user 字段的 source argumentuser.username 而不是默认的 user

class ProfileSerializer(serializers.ModelSerializer):
user = serializers.Field(source='user.username')

class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type', 'user')

请注意, Field 是标准的只读字段,因此您将无法使用此序列化程序更新用户。

或者,如果您希望 user 成为可写字段,则可以像这样使用 SlugRelatedField ...
class ProfileSerializer(serializers.ModelSerializer):
user = serializers.SlugRelatedField(slug_field='username')

class Meta:
model = Profile
fields = ('id', 'name', 'active', 'type', 'user')

如果您愿意,也可以使用第二种方法,但使用只读字段,方法是将 read_only=True 添加到 SlugField

关于Django:显示用户名而不是 ID,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14896825/

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