Я немного расстроен тем, почему это не работает.
Модели:
class User(models.Model):
...
class Group(models.Model):
...
class Member(models.Model):
user = models.ForeignKey(User, related_name='groups')
group = models.ForeignKey(Group, related_name='members')
field1 = models.IntergerField()
Просмотр:
def get_queryset(self):
return Group.objects.filter(members__user=self.request.user).annotate(field1=F('members__field1'))
Сериализатор:
field1 = serializers.SerializerMethodField()
def get_field1(self, obj):
return obj.field1
class Meta:
model = models.Group
fields = ('field1', ...)
Получение ошибки объект не имеет атрибута 'field1'
Однако при использовании того же запроса в окне оболочки успешно извлекается значение для field1
g = Group.objects.filter(members__user=self.request.user).annotate(field1=F('members__field1'))
print(g[0].field1)
Успешно печатает значение field1