我有两个基本类,我有一个像这样的序列化器:
class SomeSerializer(serializers.ModelSerializer):
def get_fields(self, *args, **kwargs):
fields = super(SomeSelializer, self).get_fields()
user = self.context['view'].request.user
fields['project'].queryset = fields['project'].queryset.filter(user=user)
return fields
class Meta:
model = SomeModel
fields = ('id', 'name', 'project', 'user')
read_only_fields = ('id','user')
项目字段是建模项目的外键。如何从项目中获取某个字段而不是其ID?
当我尝试这个时:
project = ProjectSerializer(source="project")
我得到了AttributeError:' ProjectSerializer'对象没有属性' queryset'
答案 0 :(得分:0)
您无法使用序列化程序访问“项目”字段。首先在python shell中创建模型的对象,然后使用
对其进行序列化serializer=ProjectSerializer(object)
然后,您可以使用 -
访问项目字段 serializer.data.project
答案 1 :(得分:0)
我建议使用SerializerMethodField
定义自定义属性:
class SomeSerializer(ModelSerializer):
project_some_field = SerializerMethodField()
# ...
def get_project_some_field(self, obj):
return obj.some_field
NB :按照惯例,如果属性名称为x
,则该方法应为get_x
< / p>
有关详细信息,请查看here。