python - Django Rest Framework TypeError 需要一个类似字节的对象,而不是'str'
问题描述
我用 DRF 创建了一个 Rest Api。一切正常,但一个资源(shoppingListItems)总是抛出这个错误:
类型错误
在 /v1/shoppingListItems/
需要一个类似字节的对象,而不是“str”
请求方法:GET
请求网址: http://localhost:8000/v1/shoppingListItems/
Django 版本:2.2.7
异常类型:TypeError
异常值:需要一个类似字节的对象,而不是“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']
我不知道出了什么问题,我将不胜感激。
谢谢你。
解决方案
这是因为您的类 ShoppingListItem中的状态字段 (BinaryField)。
尝试将其更改为CharField
推荐阅读
- php - 显示注意事项:多维数组中未定义的偏移量
- reactjs - 从我的 React 应用程序中的环境变量加载值不起作用
- mysql - 如何在同一张表的新列中连接主键(id)和日期?(MySQL)
- batch-file - 为什么我的文件在进入 If Statments 时会突然关闭?
- python - 如何在脚本python3中递归地重命名子目录和文件名?
- javascript - 在 Internet Explorer 11 中获取未定义?
- wordpress - 该网站使用什么平台?
- python-3.x - 在不使用 Sklearn Pipeline 的情况下获得与 Sklearn Pipeline 相同的结果
- c# - C# 从读取 modbus 设备将字节解析为 2 的补码
- python - 我的文本不会在 pygame 中显示