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]))

たとえば、モデルにのようなcityフィールドがありますが、そのフィールドは、そこから取得したJSONでは使用できません。

city:city__nameJSONで自動的に取得できる方法はありますか?

これを行うと、都市を取得できますが、定義せずにそれを行うことはできますか?

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:
        ...

"city" は、MyDataモデルの外部キーのフィールド名です。

于 2012-11-09T03:35:15.250 に答える