вот моя модель данных:
class User(Model):
name = models.CharField(max_length=255)
teams = models.ManyToManyField(Team, through=UserTeam, related_name='users')
class Team(Model):
name = models.CharField(max_length=255)
class UserTeam(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
team = models.ForeignKey(Team, on_delete=models.CASCADE)
is_special = models.BooleanField(default=True)
Когда я запрашиваю всех пользователей, я получаю такой результат (результат json в остальных API:
{
'name': 'user-1',
'teams': [
{
'name': 'team-1',
},
{
'name': 'team-2',
}
]
}
Чего я хочу добиться, так это того, что я хочу получить только команды, для которых флаг is_special установлен в true для пользователя и команды.
например. Если пользователь состоит из двух команд, а одна команда имеет флаг is_special , установленный в значение false, эта команда должна быть исключена из приведенного выше результата ...
Вот почему я включил в свой пользовательский сериализатор:
teams = TeamSerializer(read_only=True, many=True)
def get_teams(self, obj):
teams = Team.objects.filter(
userteam__user=self.context['request'].user,
userteam__is_special=True
)
serializer = UserSerializer(instance=teams, many=True)
return serializer.data
Но я все еще получаю тот же результат ...
какие-либо идеи или предложения?
спасибо!