[英]Django: Get User profile from User serializer
我有一個基本的UserProfile
,有一個模型OneToOne
有關系User
模型。
我的 User 序列化程序運行良好,但如何從相同的序列化程序和viewset
檢索相關的UserProfile
模型?
這是我的用戶配置文件模型:
class UserProfile(models.Model):
bio = models.CharField(max_length=1000)
cellphone = PhoneNumberField(null=True)
useraccount = models.OneToOneField(User, on_delete=models.CASCADE)
我當前的視圖集:
class CurrentUserViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class = CurrentUserSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
user = self.request.user
queryset = User.objects.filter(username = user)
return queryset
我的用戶序列化程序:
class CurrentUserSerializer(serializers.ModelSerializer):
groups = GroupSerializer(many=True)
class Meta:
model = User
fields = ('username', 'email', 'first_name', 'last_name', 'groups')
def to_representation(self, instance):
return {
'username': instance.username,
'email': instance.email,
'first_name': instance.first_name,
'last_name': instance.last_name,
'groups': GroupSerializer(instance.groups.all(), many=True).data,
}
我嘗試使用序列化程序執行以下操作,但出現屬性錯誤,指出我的用戶模型沒有字段profile
:
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
fields = ('dashboards', 'fullname')
class CurrentUserSerializer(serializers.ModelSerializer):
groups = GroupSerializer(many=True)
profile = TeamMemberDashboardSerializer()
class Meta:
model = User
fields = ('username', 'email', 'first_name', 'last_name', 'groups', 'profile')
def to_representation(self, instance):
return {
'username': instance.username,
'email': instance.email,
'first_name': instance.first_name,
'last_name': instance.last_name,
'groups': GroupSerializer(instance.groups.all(), many=True).data,
'profile': instance.profile
}
謝謝你的時間!
最簡單的方法是放置,用於顯示配置文件數據是將depth = 1
放入序列化程序的class Meta
中,如下所示:
class CurrentUserSerializer(serializers.ModelSerializer):
groups = GroupSerializer(many=True)
class Meta:
model = User
fields = ('username', 'email', 'first_name', 'last_name', 'groups')
depth = 1
def to_representation(self, instance):
return {
'username': instance.username,
'email': instance.email,
'first_name': instance.first_name,
'last_name': instance.last_name,
'groups': GroupSerializer(instance.groups.all(), many=True).data,
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.