Python Django REST框架:更改字段名称
我的Django应用程序为站点用户提供只读api访问。我创建了一个用户配置文件模型,并在用户模型的序列化程序中使用它: 型号: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
# + 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)