【发布时间】:2018-10-29 22:21:18
【问题描述】:
对于具有三个对象的应用程序 - User、Event 和 Action,其中用户对创建对象的事件执行操作,例如:
class Action(models.Model):
event = models.ForeignKey('CauseActivity', on_delete=models.CASCADE, related_name='actions')
user = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='actions')
type = models.CharField(max_length=100, choices=ACTION_TYPES)
date_created = models.DateTimeField(auto_now_add=True)
date_updated = models.DateTimeField(auto_now=True)
我希望我们的 RESTful API 能够在用户请求中(不需要额外的 API 调用)或通过一个额外的请求(按用户获取操作)返回一个特定用户的操作
将“actions”作为字段的简单用户序列化程序将仅返回 obj id(响应 GET ex:"actions":[108,109])
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = (
..., 'actions', )
我知道使用嵌套来序列化 username = serializers.ReadOnlyField(source='user.name') 等自定义字段,但有没有办法使用 serializers.ListSerializer 或 .ModelSerializer 来序列化我的 UserSerializer 中的全部 Action 对象字段?我通读了https://www.django-rest-framework.org/api-guide/serializers/,最好的方法对我来说并不是很清楚。谢谢
【问题讨论】:
标签: django django-models django-rest-framework