python - 如何使用 Django Rest Framework JSON API 包含相关资源?

标签 python django django-rest-framework json-api

我正在使用 Django Rest Framework JSON API创建 REST API。我只是想简单地包含一个相关资源(二级关系),但 Django 一直响应错误:

This endpoint does not support the include parameter for path...

结构是这样的:

# models:

class Household(models.Model):
  ...

class HouseholdMember(models.Model):
  household = models.ForeignKey(Household)
  ...

class Subscription(models.Model):
  subscriber = models.ForeignKey(HouseholdMember)
  ...

# serializers

from rest_framework_json_api import serializers

class SubscriptionSerializer(serializers.ModelSerializer):
  class Meta:
    model = Subscription

我希望能够发出这样的请求:http://example.com/api/subscriptions?include=subscriber.household 以便能够按家庭对订阅进行分组。但是,我根本不知道该怎么做。 I know我需要尝试使用 ResourceRelatedField 但我遗漏了一些东西或太多的新手无法理解它是如何工作的。有帮助吗?

最佳答案

好吧,也许我遗漏了一些明显的东西(因为文档中没有提到),但是如果您查看 serializers.py在 Django Rest Framework JSON API 源的示例目录中的文件,看起来你需要一个名为 included_serializers 的变量来做我想做的事。对于我的示例,这是您需要的:

# models:

class Household(models.Model):
  ...

class HouseholdMember(models.Model):
  household = models.ForeignKey(Household)
  ...

class Subscription(models.Model):
  subscriber = models.ForeignKey(HouseholdMember)
  ...

# serializers

from rest_framework_json_api import serializers

class HouseholdSerializer(serializers.ModelSerializer):
  class Meta:
    model = Household

class HouseholdMemberSerializer(serializers.ModelSerializer):
  included_serializers = {
    'household': HouseholdSerializer
  }

  class Meta:
    model = HouseholdMember

class SubscriptionSerializer(serializers.ModelSerializer):
  included_serializers = {
    'subscriber': SubscriberSerializer
  }

  class Meta:
    model = Subscription

关于python - 如何使用 Django Rest Framework JSON API 包含相关资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38900889/

相关文章:

python - 在 python 单元测试中断言 `is`

python - 高级 numpy/pandas 索引

django - 如何在 docker 上从 ascii postgresql 数据库切换到 utf8?

python - 在 Django 中构建自定义 ZIP 文件

django - 通过 Django 后端和 Angular 前端删除 MongoDB 集合中的所有文档

python - 在开发多宿主可靠 udp 时,如何使用 mininet 检测链接是否已关闭?

django 将旧日期时间字段转换为新的 1.4 日期时间,并在 SQLite 中感知时区

python - 如何获取 request.user 和特定用户的(特定模型的)记录?

python - 使用 python 队列进行 Django Rest Framework 测试

Python:引用 Pmw RadioSelect 中的单个标签