【发布时间】:2014-06-24 14:36:01
【问题描述】:
我在使用SlugRelatedField 反序列化属于unique_together 集的字段时遇到问题。
举个例子,我有一个博客模型,它有一个标题和一个作者。 这些元组唯一标识一个博客(如标题对于给定作者是唯一的,但在站点范围内不是唯一的)。我想从只包含这些值的消息中查找博客。
为了反序列化消息(即from_native),SlugRelatedField 调用:self.queryset.get(**{self.slug_field: data}),这将在 Title slug 上失败,因为它不是全局唯一的。这可以通过提供更有限的查询集(即只包含博客但该用户的查询集)来解决,但我不确定如何/在哪里是在字段中设置此查询集的最佳位置(因为我不知道作者直到我开始反序列化该字段)。
一个想法是在 get_fields 中对 Author 进行自己的反序列化,然后我可以在其中过滤 Blog 的查询集。这段代码非常丑陋,可能会导致 Author 反序列化两次,并且在将 Serializer 用于列表视图(而不是详细视图)时会出现问题。
【问题讨论】:
标签: django django-rest-framework