使用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渲染器中表单下拉列表中填充的唯一值?
我正在使用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)