オブジェクトをjsonデータとして返すAPIを作成しました。私はdjango-rest-frameworkとそのシリアライザーを使用しています。リソース (ModelResource) を使用して、「所有者」と呼ばれるプロパティなど、いくつかのフィールドを除外しました。フィールドの 1 つは、それ自体に対する外部キーです。このフィールドを API で表示したい (したがって、depth=2 を使用します) が、返されるオブジェクトで除外したのと同じフィールドを除外したいと考えています。これを行う良い方法はありますか (私はいくつかのことを試しましたが、望ましい結果は得られませんでした)。
これは私の(簡略化された)コードです:models.py内:
class MyObject(models.Model):
name = models.CharField(max_length=256, blank=True)
parent = models.ForeignKey('self', blank=True, null=True, default=None)
and_some_otherfields = models.otherFields(....)
owner = models.ForeignKey(User, null=True, blank=True, related_name='myobject_owner')
resource.py で:
class MyObjectResource(ModelResource):
model = MyObject
exclude = ('owner','and some other fields',)
オブジェクトを返すために使用されるビューでは、次のように返されます。
data = Serializer(depth=2).serialize(my_object)
return Response(status.HTTP_200_OK, data)
応答では、除外フィールドが省略されています(私が望んでいたように)。
しかし、フィールドparentでは、非表示にしたいすべてのフィールドを持つ親myobjectです。
この親オブジェクトに対して、シリアライザーが同じリソースを使用するか、二次フィールドを除外リストに追加する必要があることを示す方法を探しています....
depth =1 を使用すると、親 ([]) があるかどうかのみが表示され、ない場合は null が表示され、少なくとも親の ID を知る必要があります。