Как сохранить случайный объект в поле foreignkey в методе создания models.Manager в Django?

Я могу создавать объекты Game, у которых поле product_selection заполняется правильно, но по какой-то причине поле correct_product не заполняется. Почему так происходит?

Вот мой код из models.py:

import random

class GameManager(models.Manager):
    def create_game(self, player):
        game = self.create(player = player)
        product_selection = random.sample(list(Product.objects.exclude(users_who_viewed=player)),3)
        game.product_selection.set(product_selection)
        game.correct_product = random.choice(product_selection)
        return game

class Game(models.Model):
    player = models.ForeignKey(User, on_delete= models.CASCADE,related_name='costcorrect_player')
    score = models.IntegerField(default=0)
    product_selection = models.ManyToManyField(Product, blank=True, null=True)
    correct_product = models.ForeignKey(Product, on_delete= models.CASCADE, related_name='costcorrect_correct_product', null=True)

    objects = GameManager()

Вам просто нужно вызвать .save() в конце метода вместо просто return.

Если вы вынесете ваш код create_game из класса GameManager как собственную независимую функцию, то вы можете передать его в поле по умолчанию, и оно вызовет функцию:

def create_game():
   ...
   return game_objects

class Game(models.Model):
   ...

   product_selection = models.ManyToManyField(..., default=create_game)
Вернуться на верх