9

在我的 Django 模型中,我有 10 个字段,其中 3 个字段是外键。在从 GET 请求收到的 JSON 数据中,我得到了所有字段,但没有得到外键。

我也这样做了,但我仍然没有在 JSON 数据中获得这些字段:

DataFields = MyData._meta.get_all_field_names()
class MyResource(ModelResource):
       class Meta:
        queryset = MyData.objects.all()
        resource_name = 'Myres'
        serializer = Serializer(formats=['json'])
        filtering = dict(zip(DataFields, [ALL_WITH_RELATIONS for f in DataFields]))

例如,我在模型中有字段 like city,但该字段在我从中获得的 JSON 中不可用。

有什么方法可以在 JSON 中city:city__name自动获取?

如果我这样做,那么我得到了城市,但我可以在不定义的情况下做到这一点:

def dehydrate(self, bundle):
        bundle.data["city_name"] = bundle.obj.city__name
        return bundle
4

1 回答 1

13

您需要为外键字段创建相关资源并将它们嵌入到MyResource. 如果你制作嵌入的资源full=True,它会在获取时将其脱水MyResource,否则它会将其嵌入为相关的资源uri。

class RelatedResource(ModelResource):
    class Meta:
        ...


class MyResource(ModelResource):
    related = fields.ForeignKey(RelatedResource, full=True)

    class Meta:
        ...

然后,您可以?related__field=value在 GET 请求中过滤到MyResource.


如果您只是想要模型返回的字段__unicode__,您可以尝试执行以下操作(而不是嵌入相关资源):

class MyResource(ModelResource):    
    city = fields.CharField(attribute="city")

    class Meta:
        ...

MyData其中“city”是模型上外键的字段名称。

于 2012-11-09T03:35:15.250 回答