Django Rest Framework TypeError 一个类似字节的对象是必需的,而不是'str'



我用DRF创建了一个Rest API。一切正常,但一个资源(shoppingListItems(总是抛出此错误:

类型错误

at/v1/shoppingListItems/

需要类似字节的对象,而不是"str">

请求方法:获取

请求网址:http://localhost:8000/v1/shoppingListItems/

姜戈版本:2.2.7

异常类型:类型错误

异常值: 需要类似字节的对象,而不是"str">


仅当一个或多个项目匹配时,才会出现问题。如果结果集为空,则没有错误。

这是我 views.py:

class ShoppingListViewSet(viewsets.ModelViewSet):
queryset = ShoppingList.objects.all()
serializer_class = ShoppingListSerializer
class ItemViewSet(viewsets.ModelViewSet):
queryset = Item.objects.all()
serializer_class = ItemSerializer
class ShoppingListItemViewSet(viewsets.ModelViewSet):
queryset = ShoppingListItem.objects.all()
serializer_class = ShoppingListItemSerializer

这是我的 models.py:

class Item(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=200)
def __str__(self):
return self.name
class ShoppingList(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=200)
members = models.ManyToManyField(User, through='Membership')
items = models.ManyToManyField(Item, through='ShoppingListItem')
def __str__(self):
return self.name
class ShoppingListItem(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
shoppinglist = models.ForeignKey(ShoppingList, on_delete=models.CASCADE)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
amount = models.IntegerField()
price = models.FloatField(null=True)
status = models.BinaryField()

这是我的 serializers.py:

class ItemSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Item
fields = ['id', 'name']
class ShoppingListSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ShoppingList
fields = ['id', 'name', 'members']
class ShoppingListItemSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ShoppingListItem
fields = ['id', 'shoppinglist', 'item', 'amount', 'price', 'status']

我不知道出了什么问题,我将不胜感激。

谢谢。

这是因为您的类购物列表项中的状态字段(BinaryField(。

尝试将其更改为CharField

最新更新