Исключить использованные предметы в отношениях "один ко многим

Я пытаюсь реализовать эти отношения:

Пользователь может иметь несколько социальных сетей, но каждая социальная сеть ТОЛЬКО ОДИН РАЗ

.

У социальной сети может быть несколько пользователей.

Мне нужно, чтобы пользователь не выбирал более одного раза одну и ту же социалку.

Это то, что должно быть сделано в модели, или последующая фильтрация - выбор пользователя

class Social(models.Model):
    name = models.CharField(max_length=200)
    link = models.CharField(max_length=200)
    def __str__(self):
        return self.name

class Social2User(models.Model):
    user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
    social = models.ForeignKey(Social, null=True, on_delete=models.CASCADE)

    class Meta:
        constraints = [
            models.UniqueConstraint(
                fields=['user', 'social'], name='unique_migration_host_combination'
            )
        ]
    
    def __str__(self):
        return self.user.username + '-' + self.social.name

class UserInfos(models.Model):
    user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
    bio = models.TextField(null=False)
    def __str__(self):
        return self.user.username

Спасибо

Вернуться на верх