如何在django-rest-framework中设置raw_id_fields?

时间:2013-09-04 07:24:29

标签: django-rest-framework

在Django admin中,可以设置raw_id_fields以获得搜索小部件而不是选择框。当外键表很大时,这非常简洁,可以节省大量的数据库查询。

Django Rest Framework可浏览视图中的等效内容是什么?

3 个答案:

答案 0 :(得分:5)

Django Rest Framework 3不再支持序列化器字段上的widget属性。但是为了让您的浏览API可用,请尝试将style属性更改为使用'base_template': 'input.html',如下例所示:

class CustomerAddressSerializer(serializers.ModelSerializer):
    customer = serializers.IntegerField(source='customer_id' style={'base_template': 'input.html', 'placeholder': "Customer ID"})
    class Meta:
        model = models.CustomerAddress
        fields = ('id', 'customer', 'street', 'zip', 'city')

这样,包含数千个外键select的巨大options代码将更改为简单文本input。有关详情,请查看http://www.django-rest-framework.org/topics/browsable-api/#handling-choicefield-with-large-numbers-of-items

上的文档

答案 1 :(得分:1)

目前没有什么可以支持的。我很确定拉取请求会受到欢迎。

答案 2 :(得分:0)

借调卡尔顿所说的话,虽然在实施之前在票证中讨论是值得的。

或者,您可能需要查看使用自动完成小部件...

http://www.django-rest-framework.org/topics/browsable-api/#autocomplete