Исключение дочерних элементов во вложенном сериализаторе
У меня есть три сериализатора:
class BookingSerializer(serializers.ModelSerializer):
owner = serializers.CharField(source="owner.username", read_only=True)
class Meta:
model = Booking
fields = (
"id",
"createdDate",
"comments",
"location",
"date",
"operator",
"status",
"owner",
)
class CompanySerializer(serializers.ModelSerializer):
bookings = BookingSerializer(many=True, read_only=True)
owner = serializers.CharField(source="owner.username", read_only=True)
class Meta:
model = Company
fields = ("id", "name", "description", "location", "bookings", "owner")
class UserSerializer(serializers.HyperlinkedModelSerializer):
bookings = BookingSerializer(many=True, read_only=True)
companies = CompanySerializer(many=True, read_only=True)
class Meta:
model = User
fields = ("url", "id", "username", "email", "bookings", "companies")
UserSerializer возвращает все поля, но bookingserializer вызывается дважды.
{
"url": "http://localhost:8000/users/4/",
"id": 4,
"username": "test",
"email": "test@test.com",
"bookings": [
{
...
}
],
"companies": [
{
...
"bookings": [
{
...
}
]
}
]
}
Как исключить поле бронирования в компаниях при использовании UserSerializer? Я бы хотел, чтобы CompanySerializer возвращал bookins в других случаях.
Спасибо!