【问题标题】:Django Rest Framework Hyperlink ErrorDjango Rest 框架超链接错误
【发布时间】:2015-03-10 22:05:32
【问题描述】:

我在使用 django rest 框架将数据发布到我的视图时遇到问题。

这是返回的内容。

// 20150310150130 //http://localhost:8000/orders/order_status_update/

{ “客户”: [ “无效的超链接 - 没有 URL 匹配” ], “order_total_price”:[ “这是必填栏。” ] }

查看:

@api_view(['PUT'])
def order_status_update(request):

    if request.method == 'PUT':
            data = {'order_status': request.DATA.get('orderform'),'id': request.DATA.get('orderid'),'url': request.DATA.get('orderid'),'client': request.DATA.get('clientid'), 'order_price':request.DATA.get('')}
            print data
            serializer = OrderSerializer(data=data)
            if serializer.is_valid():
                    serializer.save()
                    return Response(serializer.data, status=status.HTTP_201_CREATED)
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

序列化器:

class OrderSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
    model = Order
    fields = ('id','url','client','order_status','order_total_price','created')

型号:

class Order(models.Model):
    STATUS_CHOICES = (
    (u'Not Fullfilled', u'Not Fullfilled'),
    (u'Tailoring', u'Tailoring'),
    (u'Shipped', u'Shipped'),
    )
    client = models.ForeignKey('clients.Client')
    order_status = models.CharField(max_length=30, choices=STATUS_CHOICES)
    order_total_price = models.CharField(max_length=30)
    created = models.DateTimeField(auto_now_add=True)
    def __unicode__(self):
            return unicode(self.id)

【问题讨论】:

  • 可以添加客户端型号代码吗?还有 OrderSerializer 类?
  • 我刚刚添加进去了。
  • 您是否在请求中指定了“client”和“order_total_price”字段?如果您没有(并且您不想),则应将这些从“字段”列表中排除

标签: python django django-rest-framework


【解决方案1】:

对于“客户”,您必须提供一个网址,例如:
http://localhost:8000/clients/1/

因为您使用的是 HyperlinkedModelSerializer,也因为此字段是客户端的外键。

至于 order_price - 我认为您的 url 中有一个错误,它需要 order_total_price 并且您正在提供 order_price。

【讨论】:

  • 文档对此不够明确。当我应该使用其 url 时,我正在使用相关字段的主键发布。
【解决方案2】:

您可以在 serializer.py 中使用 serializers.ModelSerializer 代替 serializers.HyperlinkedModelSerializer

这对我有用。

【讨论】:

    猜你喜欢
    • 2019-08-02
    • 2015-01-26
    • 2016-01-10
    • 1970-01-01
    • 2017-07-28
    • 2014-09-16
    • 2018-10-15
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多