0

我想使用“嵌套”网址/customers/<id>/orders创建新订单POST。我想customer_id根据请求的 url获取相关订单<id>

Order模型有一个与模型相关的customer = ForgeinKey(Customer,..)字段Customer

到目前为止,我的方法是:

  1. 创建一个OrderSerializer
  2. create()用于创建模型对象
  3. 在创建过程中获取客户 ID self.context['request'].get_full_path(),返回完整的 url 路径
  4. 使用基于客户 ID 获取客户对象
customer_id = self.context['request'].get_full_path().split('/')[2]
customers = Customer.objects.get(id=customer_id)
  1. 将 分配customers.id给订单的customer_id字段

该解决方案有效,但似乎非常肮脏。有没有更好的办法?

让我知道是否需要更多详细信息。

谢谢!

4

2 回答 2

0

From the create() method of the serializer, one can access the pk using

self.context['view'].kwargs['pk']

So the above code becomes:

customer_id = self.context['view'].kwargs['pk']
customers = Customer.objects.get(id=customer_id)
于 2021-06-24T12:09:08.800 回答
0

你可以简单地做到这一点。

def create(self):
    customer_id = self.kwargs['id']
    customers = Customer.objects.get(id=customer_id)
于 2021-06-26T15:34:21.143 回答