models.py 1020 B

1234567891011121314151617181920212223242526272829
  1. from django.contrib.auth import get_user_model
  2. from django.core.validators import MaxValueValidator, MinValueValidator
  3. from django.db import models
  4. from django.db.models.deletion import CASCADE, DO_NOTHING
  5. from django_extensions.db.models import TimeStampedModel
  6. from games.models import Game
  7. User = get_user_model()
  8. class UserGameProgress(TimeStampedModel):
  9. user = models.OneToOneField(User, on_delete=models.CASCADE)
  10. game = models.ForeignKey(Game, on_delete=DO_NOTHING)
  11. percent = models.IntegerField(
  12. default=0,
  13. validators=[MaxValueValidator(100), MinValueValidator(0)],
  14. help_text="Keeps track of how far through the game you are",
  15. )
  16. def __str__(self):
  17. return f"Progress in {self.game} for {self.user} {self.percent}"
  18. class UserProfile(models.Model):
  19. user = models.OneToOneField(User, on_delete=CASCADE)
  20. favorite_games = models.ManyToManyField(Game, related_name="favorite_games")
  21. def __str__(self):
  22. return f"User profile for {self.user}"