Python Django REST框架:更改字段名称

Python Django REST框架:更改字段名称,python,django,django-rest-framework,Python,Django,Django Rest Framework,我的Django应用程序为站点用户提供只读api访问。我创建了一个用户配置文件模型,并在用户模型的序列化程序中使用它: 型号: # + standard User Model class UserProfile(models.Model): user = models.ForeignKey(User, unique=True) display_name = models.CharField(max_length=20, blank=True) 序列化程序: class Use

我的Django应用程序为站点用户提供只读api访问。我创建了一个用户配置文件模型,并在用户模型的序列化程序中使用它:

型号:

# + standard User Model

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    display_name = models.CharField(max_length=20, blank=True)
序列化程序:

class UserProfileSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = UserProfile
        fields = ('display_name',)

class UserSerializer(serializers.HyperlinkedModelSerializer):
    userprofile_set = UserProfileSerializer(many=False, label='userprofile')

    class Meta:
        model = User
        fields = ('id', 'username', 'userprofile_set')

这是可行的,但字段
userprofile\u set
看起来很难看。可以更改字段名吗?

哦,我可以随意命名变量
userprofile\u set
。首先,我测试了名称
userprofile
,该名称有冲突。如果我将字段命名为
profile
它会工作。:)


为了补充您的答案,您还可以使用关系的相关名称:

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True, related_name='profiles')
    display_name = models.CharField(max_length=20, blank=True)
这样,您也可以在代码中使用:

user = User.objects.last() #some user
user.profiles.all() #UserProfiles related to this user, in a queryset
user.profiles.last() #the last UserProfile instance related to this user.
我可以建议你把那把外国钥匙换成一个OneToOneField吗?这样,用户就可以拥有一个且只有一个用户配置文件,而无需建立唯一性:

class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='profile')
    display_name = models.CharField(max_length=20, blank=True)
class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='profile')
    display_name = models.CharField(max_length=20, blank=True)