【问题标题】:Assign pk form URL to model's related field将 pk 表单 URL 分配给模型的相关字段
【发布时间】:2021-06-24 09:47:11
【问题描述】:

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

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

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

  1. 创建OrderSerializer
  2. 使用create() 创建模型对象
  3. 在创建过程中从self.context['request'].get_full_path() 获取客户ID,返回完整的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 字段

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

如果需要更多详细信息,请告诉我。

谢谢!

【问题讨论】:

    标签: django django-rest-framework nested-urls


    【解决方案1】:

    通过序列化器的create()方法,可以使用访问pk

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

    所以上面的代码变成了:

    customer_id = self.context['view'].kwargs['pk']
    customers = Customer.objects.get(id=customer_id)
    

    【讨论】:

      【解决方案2】:

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

      def create(self):
          customer_id = self.kwargs['id']
          customers = Customer.objects.get(id=customer_id)
      

      【讨论】:

        猜你喜欢
        • 2014-03-09
        • 2017-02-09
        • 1970-01-01
        • 1970-01-01
        • 2015-08-01
        • 2023-02-12
        • 1970-01-01
        • 2012-03-02
        • 1970-01-01
        相关资源
        最近更新 更多