python - 尝试使用经过验证的用户令牌调用 api 时出现值错误
问题描述
我正在尝试在我的应用程序中获取所有客户的最新订单。我以用户身份登录,收到有效令牌,然后尝试使用 api。每次我尝试调用我的 api 时都会收到此错误:“ValueError:无法查询“jake thedogg”:必须是“CustomerDetails”实例。” 我正在尝试从该用户获取所有订单实例。
def customer_get_latest_order(request):
customer = get_user(request)
if not customer:
return JsonResponse({'invalid token'})
order = OrderSerializer(Order.objects.filter(customer=customer).order_by("-id"),
many=True,
context={"request": request}
).data
return JsonResponse({"order": order})
模型:
class OrderDetail(models.Model):
order = models.ForeignKey(
Order, related_name='order_details', on_delete=models.CASCADE)
product_size = models.ForeignKey(ProductSize, on_delete=models.CASCADE)
quantity = models.IntegerField()
sub_total = models.FloatField()
def __str__(self):
return str(self.id)
序列化器:
class OrderSerializer(serializers.ModelSerializer):
customer = CustomerOrderSerializer()
driver = OrderDriverSerializer()
dispensary = OrderDispensarySerializer()
order_details = OrderDetailSerializer(many=True)
status = serializers.ReadOnlyField(source="get_status_display")
class Meta:
model = Order
fields = ("id", "customer", "dispensary", 'delivery_signature', 'order_rated', 'quantity',
"driver", "order_details", "total", "status", "address", "created_at")
订购型号:
class Order(models.Model):
a = 1
b = 2
c = 3
d = 4
e = 5
STATUS_CHOICES = (
(a, "ah"),
(b, "bb"),
(c, "cc"),
(d, "dd"),
(CANCELED, "Canceled/Refunded")
)
address = models.CharField(max_length=500)
created_at = models.DateTimeField(default=timezone.now)
customer = models.ForeignKey(CustomerDetails, on_delete=models.CASCADE)
delivery_signature = models.ImageField(
upload_to='delivery_selfie/', blank=True, default='')
delivered_at = models.DateTimeField(default=timezone.now)
dispensary = models.ForeignKey(Dispensary, on_delete=models.CASCADE)
driver = models.ForeignKey(
Driver, blank=True, null=True, on_delete=models.CASCADE)
picked_at = models.DateTimeField(default=timezone.now)
order_rated = models.BooleanField(default=False)
status = models.IntegerField(choices=STATUS_CHOICES)
total = models.FloatField()
def __str__(self):
return str(self.id)
每次我尝试调用 api 时都会收到该错误。
解决方案
推荐阅读
- python - 在 python 脚本中运行两个 asynco 循环(telethon,aiopg)
- java - 使用带有特定用例的 Spring Security 获取访问令牌
- java - 在 gradle 中创建胖 jar 时遇到问题 - 使用 Eclipse IDE、Kryonet 和 LibGDX
- octave - 在 Octave 中求解多个值的方程
- html - 如何使用 :not() 选择器选择表?
- react-native - Expo usePermissions 使用多个权限时无限循环(数组格式)
- php - 为什么从控制器调用时应用程序未定义?
- html - 如何将底部边框合并到页面底部
- asp.net-core - 如何在 Razor Pages 应用程序中托管 Blazon
- html - Ionic - 在 html 中更改阴影类的 css