DRF: Как я могу показать все поля поля m2m вместо только имени

Я создаю простой генератор лидов, используя Django Rest Framework. Я пытаюсь показать список "назначенных объектов" внутри лида, используя поля django "многие ко многим". Но все, что он покажет в API - это id каждого из объектов, связанных с полем "многие ко многим". Как я могу получить доступ не только к имени, используя DRF? В основном мне нужно показать название, описание и фотографию объекта из каждой записи объекта.

serializers.py

class LeadUpdateSerializer(serializers.ModelSerializer):
    is_owner = serializers.SerializerMethodField()
    class Meta:
        model = Lead
        fields = (
            "id",
            "first_name",
            "last_name",
            "PrimaryAddress",
            "assigned_facilities",
        )
        read_only_fields = ("id", "is_owner")

    def get_is_owner(self, obj):
        user = self.context["request"].user
        return obj.agent == user

models.py

class Facility(models.Model):
    UUID = models.CharField(max_length=150, null=True, blank=True)
    Name = models.CharField(max_length=150, null=True, blank=False)
    mainimage = models.ImageField(null=True, blank=True)
    FacilityDescription = models.TextField(max_length=1000, null=True, blank=True)

    def __str__(self):
        return self.Name

class Lead(models.Model):
    assigned_facilities = models.ManyToManyField(Facility,  related_name='assigned_facilities')
    created_at = models.DateTimeField(auto_now_add=True)
    first_name = models.CharField(max_length=40, null=True, blank=True)
    last_name = models.CharField(max_length=40, null=True, blank=True)


    def __str__(self):
        return f"{self.first_name} {self.last_name}"

Мы можем сказать следующее:

class FacilitySerializer(serializers.ModelSerializer)
    class Meta:
        fields = (
            "id",
            "Name",
            "mainimage",
            "FacilityDescription",
        )


class LeadUpdateSerializer(serializers.ModelSerializer):
    assigned_facilities = FacilitySerializer(many=True)
    is_owner = serializers.SerializerMethodField()

    class Meta:
        model = Lead
        fields = (
            "id",
            "first_name",
            "last_name",
            "PrimaryAddress",
            "assigned_facilities",
        )
        read_only_fields = ("id", "is_owner")

    def get_is_owner(self, obj):
        user = self.context["request"].user
        return obj.agent == user
Вернуться на верх