Получение instance.id во время аннотации Django

не могу заставить его работать Мне нужно аннотировать функцию, и для этой функции мне нужно передать id экземпляра

qs = cls.objects.filter(**filters).values(**values).annotate(
            **annotations,
            sheets_sum=counter('sheets'),
            sheets_color=counter('sheets', color=True),
            sheets_grayscale=culc_function(color=False, id = ???),

Есть ли способ сделать это? Чтобы получить идентификатор экземпляра во время аннотации

Передайте 'id' в значениях, затем вы можете использовать его значение в аннотации

qs = cls.objects.filter(**filters).values('id', **values).annotate(
            sheets_grayscale=culc_function(color=False, id='id'),)

Вы можете использовать поддержку выражений в django (1) и сделать что-то вроде

qs = cls.objects.filter(**filters).values(**values).annotate(
            **annotations,
            sheets_sum=counter('sheets'),
            sheets_color=counter('sheets', color=True),
            sheets_grayscale=culc_function(color=False, id = F('pk'),
)

1: https://docs.djangoproject.com/en/3.2/ref/models/expressions/

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