【问题标题】:Django REST Framework nested relations without related names没有相关名称的 Django REST Framework 嵌套关系
【发布时间】:2013-08-12 05:35:25
【问题描述】:

我有一些与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)

【问题讨论】:

    标签: django serialization django-rest-framework


    【解决方案1】:

    我猜您需要手动查询相关对象,然后手动构造序列化程序。然后,您将构建最终表示并将其作为 data 参数传递给 Response 对象。

    不过,您似乎让生活变得困难。如果您只是在您的相关模型上定义related_name,您可以使用ModelSerializer(或HyperlinkedModelSerializer),这一切都Just Work™。 ——你不能这样做有什么原因吗?

    【讨论】:

    • 不能这样做,因为还有其他具有相同名称模型的应用程序......这是有道理的。我应该重写哪些方法来做到这一点?
    猜你喜欢
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多