我有以下型号 User
序列化器:
team
字段是 User
模型中的 ForeignKey
并且已经过序列化以使用 setup_eager_loading
函数优化其查询性能
class UserSerializer(serializers.ModelSerializer):
team = serializers.StringRelatedField()
def setup_eager_loading(queryset):
queryset = queryset.select_related('team',)
class Meta:
model = User
fields = ('url', 'username','password','first_name','last_name',
'photo','team','position','last_login',)
我的 viewset
到 User
如下:
from rest_framework import viewsets
from rest_framework import filters
from .models import User
from .serializers import UserSerializer
# Viewsets define the behavior of the view
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
filter_fields = ('username','is_player', 'first_name','last_name','team','email',)
当我转到我的api序列化程序中的用户实例并且我希望通过 raw data media type: application/json
进行更新时,我收到以下消息:
在我的 User
模型中,图像字段以这种方式定义:
class User(AbstractBaseUser, PermissionsMixin):
#... other attributes
photo = models.ImageField(upload_to='avatars', blank=True)
如何通过JSON原始数据更新用户序列化模型中的任何字段/属性,而不会在 photo
字段中显示有关编码类型的消息
在this question中讨论了与更新请求中预期的DRF相关的base64编码字符串,但我尝试添加 Base64ImageField
序列化程序并在我的 UserSerializer
类中使用它,但我得到了:
有这个特例:
Exception Value: Incorrect padding