我有一些与User
相关的模型,但在用户上没有相关名称:
class Registration(models.Model):
user = models.OneToOneField('auth.User', related_name='+')
class ManyToOneModel(models.Model):
user = models.ForeignKey('auth.User', related_name='+')
我想为User
创建一个序列化程序,它可以将其作为嵌套资源。有没有办法指定查询集/对象是什么?这是我所拥有的一个例子 - 它完全与'User' object has no attribute 'registration'
:
class UserSerializer(serializers.Serializer):
pk = serializers.Field()
registration = RegistrationSerializer()
many_to_one_model = ManyToOneModelSerializer(many=True, required=False)
答案 0 :(得分:2)
我猜您需要手动查询相关对象,然后手动构建序列化程序。然后,您将构造最终表示并将其作为data
参数传递给Response
对象。
看起来你的生活很艰难。如果您只是在相关模型上定义related_name
,则可以使用ModelSerializer
(或HyperlinkedModelSerializer
),它将全部 Just Work™。 - 你有什么理由不能这样做吗?