dav*_*lab 2 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...
Run Code Online (Sandbox Code Playgroud)
结构是这样的:
# 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
Run Code Online (Sandbox Code Playgroud)
我希望能够发出这样的请求:http://example.com/api/subscriptions?include=subscriber.household能够按家庭对订阅进行分组。但是,我根本找不到解决方法。我知道我需要一起玩,ResourceRelatedField但是我缺少新手或某些东西,无法理解它的工作原理。有什么帮助吗?
好吧,也许我缺少一些明显的东西(因为在文档中没有提到),但是如果您查看serializers.pyDjango 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
Run Code Online (Sandbox Code Playgroud)