Сохранение данных в базу данных 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 )