Как сохранить случайный объект в поле 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)