cloud-run-django-terraform/gametracker/models.py (34 lines of code) (raw):
from django.db import models
from django.contrib import admin
class Player(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
admin.site.register(Player)
class Game(models.Model):
name = models.CharField(max_length=100)
icon = models.CharField(max_length=5)
description = models.TextField()
def __str__(self):
return self.name
admin.site.register(Game)
class Match(models.Model):
players = models.ManyToManyField(
Player, related_name="matches", verbose_name="List of players"
)
game = models.ForeignKey(Game, on_delete=models.RESTRICT)
winner = models.ForeignKey(
Player, default=None, related_name="winning_matches", on_delete=models.RESTRICT
)
datetime = models.DateTimeField()
notes = models.TextField(default=None)
# Oxford comma implementation
def __str__(self):
players = [p.name for p in self.players.all()]
if (len(players)) < 3:
nice_list = " and ".join(players)
*ps, an = players
nice_list = f"{', '.join(ps)} and {an}"
return f"{self.game.name} match between {nice_list}"
class Meta:
verbose_name_plural = "matches"
admin.site.register(Match)