Получение 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/