Django Rest框架-反向关系

Django Rest框架-反向关系,django,django-rest-framework,tastypie,Django,Django Rest Framework,Tastypie,如何在api中包含相关字段 class Foo(models.Model): name = models.CharField(...) class Bar(models.Model): foo = models.ForeignKey(Foo) description = models.CharField() 每个Foo都有一些与他相关的酒吧,比如图片或者其他什么 如何在Foo的资源中显示这些栏 有了tastypie,退出就简单了,我不确定Django Rest框架能不

如何在api中包含相关字段

class Foo(models.Model):
    name = models.CharField(...)

class Bar(models.Model):
    foo = models.ForeignKey(Foo)
    description = models.CharField()
每个Foo都有一些与他相关的酒吧,比如图片或者其他什么

如何在Foo的资源中显示这些栏


有了tastypie,退出就简单了,我不确定Django Rest框架能不能正常工作。

!嘘

好的,这就是我所做的:

按照Django REST框架的Quickstart文档中的描述,为Bar对象创建序列化程序、视图和URL

然后在Foo序列化程序中,我执行了以下操作:

class FooSerializer(serializers.HyperlinkedModelSerializer):
    # note the name bar should be the same than the model Bar
    bar = serializers.ManyHyperlinkedRelatedField(
        source='bar_set', # this is the model class name (and add set, this is how you call the reverse relation of bar)
        view_name='bar-detail' # the name of the URL, required
    )

    class Meta:
        model = Listing

实际上,它非常简单,文档只是没有很好地显示出来,我想说..

现在,您只需将反向关系添加到
字段
元组即可实现这一点

就你而言:

class FooSerializer(serializers.ModelSerializer):
    class Meta:
        model = Foo
        fields = (
            'name', 
            'bar_set', 
        )

现在“bar”集将包含在您的Foo响应中。

我无法使上述功能正常工作,因为我有一个名为
FooSomething
的模型

我发现以下几点对我有用

# models.py

class FooSomething(models.Model):
    name = models.CharField(...)

class Bar(models.Model):
    foo = models.ForeignKey(FooSomething, related_name='foosomethings')
    description = models.CharField()

# serializer.py

class FooSomethingSerializer(serializers.ModelSerializer):
    foosomethings = serializers.StringRelatedField(many=True)

    class Meta:
        model = FooSomething
        fields = (
            'name', 
            'foosomethings', 
        )

这对我不起作用。我收到一个错误,说无法解析url。我已经在我的rest/url.py中添加了这个url,它可以正常工作。不确定我做错了什么。我也在做同样的事情,在嵌套的响应中,假设有4个相关的条,然后我得到4个空的JSON,我不知道为什么这不起作用,计数正确起作用如果
bar
模型被称为
SomethingBar
,会发生什么<代码>某个条形图集和
某个条形图集
都不起作用:(