Сохранение данных в базу данных Django с помощью представлений

Мне нужна помощь с одной вещью в моем проекте django.

У меня есть класс games_renderer в моем views.py, который связан с путем в URL. Мне нужно, чтобы этот класс принимал три значения и затем хранил их в базе данных SQL в Django в созданной модели UserGameScore. Я пытался сделать это с помощью model.object.score, но приложение сообщает об ошибке. Я думаю, что проблема в том, что приложение не знает, какой строке присвоить значение, но я не знаю, где я могу определить это значение, используя значение player_id. Значение Game_id используется для указания того, в какой столбец должно быть записано значение.Может ли кто-нибудь помочь мне, это срочно!

views.py

def games_renderer(request, game_id, player_id, score):

if game_id == 1:
    
        UserGameScore.objects.create(game1_score = score)
elif game_id ==2:
    UserGameScore.objects.create(game2_score = score)
elif game_id ==3:
    UserGameScore.objects.create(game3_score = score)
else:
    return render(request, 'result.html',{'game_id' : game_id, 'player_id' : player_id, "score" : score}   )

models.py

class UserGameScore(models.Model):
    user_rec = models.ForeignKey(User, on_delete=models.CASCADE)
    game1_score = models.IntegerField(null=True, blank=True)
    game2_score = models.IntegerField(null=True, blank=True)
    game3_score = models.IntegerField(null=True, blank=True)

Вы можете попробовать это.

def games_renderer(request, game_id, player_id, score): 
    game_score = UserGameScore() 
    if game_id === 1: 
         game_score.game1_score = score 
    if game_id === 2: 
        game_score.game2_score = score 
    if game_id === 3: 
        game_score.game3_score = score 
    game_score.save()

Вы также можете изменить свою модель, чтобы упростить представление. Вот небольшое предложение.

class UserGameScore(models.Model):
    GAME_CHOICES = [
    (ONE, '1'),
    (TWO, '2'),
    (THREE, '3'),
    ]
    user_rec = models.ForeignKey(User, on_delete=models.CASCADE)
    score = models.IntegerField(null=True, blank=True)
    game_type = models.CharField(
        max_length=2,
        choices=GAME_CHOICES,
        default=ONE,
    )

Ваш вид должен выглядеть примерно так:

def games_renderer(request, game_id, player_id, score): 
    game_score = UserGameScore(user_rec=player_id, score=score, game_type=game_id ) 
Вернуться на верх