我正在构建userprofile功能,下面是Models,ModelSerializer和ModelViewSet的详细信息。
当我向UserProfile发送GET请求时,我只获取UserProfile Model中的字段。但我还想获得用户模型中存在的firstname,lastname,email等。
class UserProfile(models.Model):
user= models.OneToOneField(User,on_delete=models.CASCADE,related_name='userprofile');
state= models.CharField(max_length=200)
city= models.CharField(max_length=200)
add1= models.CharField(max_length=200)
add2= models.CharField(max_length=200)
postalcode= models.IntegerField()
country= models.CharField(max_length=200)
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
fields = ('state','city','country')
class UserProfileViewSet(viewsets.ModelViewSet):
queryset = UserProfile.objects.all()
serializer_class = UserProfileSerializer
def get_queryset(self):
if self.action == 'list':
return self.queryset.filter(user=self.request.user)
return self.queryset
请告诉我如何从userProfile模型获取OneToOneField的详细信息。
答案 0 :(得分:0)
创建用户序列化程序并将其添加到用户配置文件序列化程序和字段中。
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
class UserProfileSerializer(serializers.ModelSerializer):
user=UserSerializer(read_only=True)
class Meta:
model = UserProfile
fields = ('state','city','country','user')