-
Notifications
You must be signed in to change notification settings - Fork 0
Achievements ~ Data Model
mhenry111 edited this page Apr 22, 2025
·
1 revision

A Game has Achievements:
class Game(models.Model): *from games/models.py
- name = models.TextField()
- description = models.TextField()
- year_published = models.IntegerField(null=True, blank=True)
- etc.
class Achievement(models.Model):
- class Rarity(models.IntegerChoices):
- COMMON = 1, ‘Common’
- UNCOMMON = 2, ‘Uncommon’
- RARE = 3, ‘Rare’
- PRECIOUS = 4, ‘Precious’
- name = models.TextField()
- description = models.TextField(null=True, blank=True)
- spoiler = models.BooleanField()
- rarity = models.IntegerField(choices=Rarity.choices)
- game = models.ForeignKey(Game, on_delete = models.CASCADE)
A User has Achievements:
class UserAchievement(models.Model):
-
user = models.ForeignKey(User, on_delete = models.CASCADE)
-
achievement = models.ForeignKey(Achievement, on_delete = models.CASCADE)
-
pinned = models.BooleanField()
-
date_earned = models.DateTimeField()
-
class Meta:
- unique_together = (user, achievement)
A User has played Games:
class UserProfile(models.Model): *from user/models.py
- user = models.OneToOneField(User, on_delete=models.CASCADE)
- display_name = models.TextField()
- bio = models.TextField(blank=True)
- friends = models.ManyToManyField(User, related_name="friendship", blank=True)
- date_joined = models.DateTimeField(auto_now_add=True)
- games = models.ManyToManyField(Game)
-
Achievements
-
Adding Games
-
Adding Games II
-
API
-
Forums
-
Games
-
Interactive Fiction
-
Knowledge Base
-
Live Chat
-
Matches
-
Tournaments
-
Users & Friending