Я новичок ie из Django. И я не понимаю, как работает Django модель.
Во-первых, я пытаюсь создать модель оценки пользователя в файле users / models.py, чтобы у каждого пользователя была переменная оценки для сохранения собственного счета. и оценка может быть обновлена.
Затем в моем morse_logs / game1. html я задам пользователю вопрос, такой же простой, как 1 + 1, затем извлекаю ответ и сравниваю его в morse_logs / views.py, чтобы увидеть, правильно, если это правильно, я добавлю 5 баллов этому пользователю; если неверно, оценка не добавляется.
Так что теперь я пытаюсь определить правильную модель для установки поля для пользователя, чтобы иметь его собственную оценку, и мне интересно, как я могу обновить и получить оценку пользователя в view.py.
users / models.py
from django.db import models
from django import forms
from django.contrib.auth.models import User
from django.db.models.signals import post_save
# Create your models here.
class UserProfile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
description = models.CharField(max_length=100, default='')
#score = models.CharField(User, max_length=10, default=0)
def create_profile(sender, **kwargs):
if kwargs['created']:
user_profile = UserProfile.objects.create(user=kwargs['instance'])
post_save.connect(create_profile, sender=User)
class UserScore(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
score = models.CharField(max_length=1000, default=0)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""Returns a string representation of the model"""
return self.score
morse_logs / game1. html
{% block content %}
<div class="container">
<title>GAME 1</title>
<h1>GAME 1</h1>
<h2>1 + 1 = ?</h2>
<input type="number" id="ans1" name="ans1"><br><br>
<button type="submit" name="game1Answer">Decipher</button>
</div>
{% endblock content %}
morse_logs / views.py
@login_required()
def game1(request):
"""The Game 1 page"""
val1 = request.GET.get('ans1', '')
res = "Incorrect"
if val1 == 2:
#user's score declared in model increase 5points
#display correct and 5 points added to user
res = "Correct"
else:
#user's score declared in model has no point
#display incorrect and 0 point added to user
res = "Incorrect"
return render(request, 'morse_logs/game1.html', {'result': res})