from django.db import models
from django.contrib.auth.models import User
class Task(models.Model):
name = models.CharField(max_length=16, null=None, blank=None)
max_score = models.PositiveIntegerField(null=None, blank=None)
def __str__(self):
return '{}{}'.format(self.name, self.max_score)
class Achievement(models.Model):
task = models.ForeignKey(Task, null=None, blank=None)
user = models.ForeignKey(User, null=None, blank=None)
score = models.PositiveIntegerField(null=None, blank=None)
def __str__(self):
return '{} achieved {} in {}'.format(self.user, self.score, self.task)
Есть юзеры. Есть список задач.
Юзер выполнят задачу - создаётся новая ачивка «задача, юзер, набранные очки».
Нужно получить для конкретного юзера список «задача: набранные очки». Если ачивки ещё нет, то набранные очки=0.