我在使用 drf 函式視圖時遇到問題,我收到類似這樣的序列化程式錯誤: {'non_field_errors': [ErrorDetail(string='Invalid data. Expected a dictionary, but got QuerySet.', code='invalid')]} 這是我的基于函式的視圖:
@api_view(["GET","POST"])
def UserSearch(request):
selected_users = Profile.objects.all()
serializer = UserProfileSerializer(data=selected_users)
if serializer.is_valid():
return Response(data=serializer.data)
else:
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
我的序列化器:
class UserProfileSerializer(serializers.ModelSerializer):
class Meta:
fields = ('user','name','surname','gender','country','city','sport')
model = Profile
和輪廓模型:
class Profile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
name = models.CharField(max_length=50, blank=True)
surname = models.CharField(max_length=50, blank=True)
gender = models.CharField(max_length=50, blank=True)
country = models.CharField(max_length=50, blank=True)
city = models.CharField(max_length=50, blank=True)
sport = models.CharField(max_length=60, blank=True)
#date_of_birth = models.DateField()
def __str__(self):
return f"{self.name} {self.surname} from {self.city}"
uj5u.com熱心網友回復:
你的問題在這里:
serializer = UserProfileSerializer(data=selected_users)
這一定是
serializer = UserProfileSerializer(selected_users, many=True)
data= 此處不應出現,資料僅適用于 python dict,例如,當您想要序列化 ??python dict 時。
為什么many=True,因為您要查詢超過 1 個表行,所以它需要很多
你的最終代碼將是:
@api_view(["GET","POST"])
def UserSearch(request):
selected_users = Profile.objects.all()
serializer = UserProfileSerializer(selected_users, many=True) # <------
if serializer.is_valid():
return Response(data=serializer.data)
# that else was redundant
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/409937.html
標籤:
上一篇:TypeError:引數“reports_pk”有多個值
下一篇:DjangoRestFramework-過濾ArrayField包含value1或value2的模型,而不是子集
