相关疑难解决方法(0)

动态限制相关字段的查询集

使用Django REST Framework,我想限制哪些值可以在创建中的相关字段中使用.

例如,考虑此示例(基于http://django-rest-framework.org/api-guide/filtering.html上的过滤示例,但更改为ListCreateAPIView):

class PurchaseList(generics.ListCreateAPIView)
    model = Purchase
    serializer_class = PurchaseSerializer

    def get_queryset(self):
        user = self.request.user
        return Purchase.objects.filter(purchaser=user)
Run Code Online (Sandbox Code Playgroud)

在此示例中,如何确保在创建时,购买者可能只等于self.request.user,并且这是可浏览API渲染器中表单下拉列表中填充的唯一值?

python django django-rest-framework

37
推荐指数
5
解决办法
2万
查看次数

扩展django rest框架以允许在嵌套序列化程序中继承上下文

我正在使用Django 1.6(很快升级到1.8),Python 2.7和DRF 3.2.5(很快升级到最新版本).

我有一套深度嵌套的序列化程序(~10级深度,总共20-30个序列化的模型).我正在尝试向上下文添加一个布尔标志,这将确定序列化的输出层次结构是详细的(包括所有模型的字段)还是基本的(仅部分字段).

我写了以下代码(部分代码段):

from rest_framework import serializers
from app.models import Institute, Department, Member

class MemberSerializer(serializers.ModelSerializer):
    def get_fields(self):
        fields = super(MemberSerializer, self).get_fields()
        if self.context['basic_view']:
            for field in ['height', 'weight']:
                del fields[field]
        return fields

    class Meta:
        model = Member
        fields = ('id', 'birth_date', 'height', 'weight')


class DepartmentSerializer(serializers.ModelSerializer):
    members = MemberSerializer(many=True, read_only=True)

    def get_fields(self):
        fields = super(DepartmentSerializer, self).get_fields()
        if self.context['basic_view']:
            for field in ['type', 'manager']:
                del fields[field]
        return fields

    class Meta:
        model = Department
        fields = ('id', 'name', 'type', 'manager', …
Run Code Online (Sandbox Code Playgroud)

django serialization python-2.7 django-rest-framework

8
推荐指数
1
解决办法
1567
查看次数