для приложения с тремя объектами - 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), либо с помощью одного дополнительного запроса (получить действия пользователя)
простой пользовательский сериализатор с «действиями» в качестве поля будет возвращать только obj ids (ответ на 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 для сериализации полного набора Action
полей объектов в моем UserSerializer
? Я прочитал https://www.django -rest-framework.org / api-guide / serializers / , и лучший подход мне не совсем понятен. спасибо