Как вывести список разделенных результатов в Django Rest Framework

В настоящее время у меня есть четыре конечные точки:

/boards
/boards/public_to_company
/boards/my_collections
/boards/shared_with_me

первая конечная точка получает все доски, а следующие 3 - это пользовательские действия, которые применяют некоторые фильтры. Но я хотел бы, чтобы /boards возвращало то же, что и три доски, но разделенное, что-то вроде этого:

{
public_to_company_boards: Object { count: 8, boards: […] }
shared_w_boards Object: { count: 1, boards: […] }
user_boards Object:{ count: 2, boards: […] }
}

Я не уверен, нужно ли мне использовать anotate или что-то подобное.

моя текущая модель:

class Board(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=200, blank=False, null=False)
    description = models.TextField(max_length=1000, blank=True, null=True)
    public_to_company = models.BooleanField(default=False)
    share_list = ArrayField(models.CharField(max_length=15), null=True, blank=True, default=list)
    last_update = models.DateTimeField(auto_now=True)
    owner = models.CharField(max_length=200, blank=False, null=False)
    deleted = models.BooleanField(default=False)
    history = HistoricalRecords()

serializer:

class BoardSerializerList(serializers.ModelSerializer):
    qtd_cards = serializers.SerializerMethodField()

    @staticmethod
    def get_qtd_cards(instance):
        return instance.cards.count()

    class Meta:
        model = Board
        fields = '__all__'
        read_only_fields = ['owner']

view:

Буду благодарен, если у вас есть другие комментарии по поводу другой части кода. Я пытался сделать аннотацию на методе get_queryset, но это не работает. Я почти уверен, что мне нужно использовать другой сериализатор, и я пытаюсь сделать это сейчас.

Вернуться на верх