mic*_*mit 5 django serialization django-rest-framework
我制作了一个 api,它返回一个对象作为 json 数据。我正在使用 django-rest-framework 及其序列化程序。使用资源 (ModelResource),我排除了一些字段,例如名为“所有者”的属性。其中一个字段是其自身的外键。我想在 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')
Run Code Online (Sandbox Code Playgroud)
在资源.py:
class MyObjectResource(ModelResource):
model = MyObject
exclude = ('owner','and some other fields',)
Run Code Online (Sandbox Code Playgroud)
在用于返回对象的视图中,它返回以下内容:
data = Serializer(depth=2).serialize(my_object)
return Response(status.HTTP_200_OK, data)
Run Code Online (Sandbox Code Playgroud)
在响应中,它省略了排除字段(正如我想要和预期的那样)。
但是在父字段中,父对象 myobject 包含我想隐藏的所有字段。
我正在寻找一种方法来表明对于这个父对象,序列化程序应该使用相同的资源,或者将次要字段添加到排除列表中......
如果我使用 depth =1,它只显示它是否有父级 ([]),如果没有则显示 null,并且我至少需要知道父级的 ID。
啊,我刚刚发现:
我需要为我想要显示的资源的所有字段添加资源....
fields = ('name', ("parent","MyObjectResource") , '以及您还想查看的所有其他字段...')
我在这里找到它:谷歌小组论坛问题
您可以跳过排除,它会忽略它,只需添加您想要显示的字段,您不必定义它们,除非您需要指示要使用什么资源。
下面是resource.py部分的最终代码:
class MyObjectResource(ModelResource):
model = MyObject
fields = ('name', ("parent","MyObjectResource"), 'and all the other fields you want to see as well...')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5028 次 |
| 最近记录: |