from django.conf import settings from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver class Building(models.Model): geojson_id = models.IntegerField() health = models.FloatField() class PlayerInfo(models.Model): user = models.OneToOneField( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="player_info", ) energy = models.PositiveIntegerField() class UserProfile(models.Model): user = models.OneToOneField( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="profile", ) display_name = models.CharField(max_length=150, unique=True) def __str__(self): return f"{self.display_name} ({self.user.username})" # type: ignore[attr-defined] @receiver(post_save, sender=settings.AUTH_USER_MODEL) def create_profile_for_user(sender, instance, created, **kwargs): if created: UserProfile.objects.create( user=instance, display_name=instance.username, ) PlayerInfo.objects.create(user=instance, energy=10_000)