Zed
Zed

Reputation: 379

Able to add the same user multiple times to the another model

I have a model which adds(assigns) users to the academy (academy user), the issue is I am able to add the same user multiple times to the academy. What am I doing wrong here?

class AcademyPlayer(models.Model):
    academy = models.ForeignKey(Academy, on_delete=models.CASCADE)
    player = models.ForeignKey('player.Player', on_delete=models.CASCADE)
    date_joined = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.player.user.name

I am adding the player.Player model for reference:

class Player(models.Model):

    count = models.IntegerField(
        _('count'),
        null=True,
        blank=True
    )

    user = models.OneToOneField(settings.AUTH_USER_MODEL,
            on_delete=models.CASCADE, related_name='player_user')

    def __str__(self):
        return self.user.email

Upvotes: 0

Views: 31

Answers (1)

Exprator
Exprator

Reputation: 27533

class AcademyPlayer(models.Model):
    academy = models.OneToOneField(Academy, on_delete=models.CASCADE)
    player = models.OneToOneField('player.Player', on_delete=models.CASCADE)
    date_joined = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.player.user.name

use OneToOneField for this

and dont forget to makemigrations and migrate after this change

Upvotes: 1

Related Questions