@ElefanObi

Как получить объект из Many-To-Many Field?

У меня есть модели:
class Position(models.Model):
    name = models.CharField(max_length=50, unique=True, default=None, blank=False, null=False)

class Team(models.Model):
    city = models.ForeignKey(City, null=True, on_delete=models.DO_NOTHING)
    position = models.ForeignKey(Position, null=True, on_delete=models.CASCADE)

class Game(models.Model):
    gameId = models.IntegerField(default=0, blank=False, null=False)  # не id
    team = models.ManyToManyField(to=Team)

class City(models.Model):
    name = models.CharField(default=None, unique=True, max_length=50, blank=False, null=False)

В качестве аргументов в функцию передаются gameId, Position_name и City_name.
Мне нужны запросы или запросы с кодом (если нужны будут итерации по QuerySet):
1. чтобы проверить существует ли объект Team добавленный в м2м объекта Game и связанный с Position (ForeignKey)
2. получить этот объект
3. назначить ему City, если текущий City не совпадает с аргументом функции.
Надо сделать минимальным количеством запросов.
  • Вопрос задан
  • 512 просмотров
Решения вопроса 1
@FulTupFul
game = Game.objects.get(id=gameId)
team = game.team.filter(position__name=Position_name)
if team.exists():
    team[0].city = City.objects.get(name=City_name) # Тут стоит сделать более строгую проверку чтобы не было дублей
    team[0].save()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы