Ограничение ManyToManyField для записей одного и того же пользователя django - PullRequest
0 голосов
/ 01 августа 2020

У меня две модели подключены через ManyToManyField. Проблема в том, что другие пользователи могут видеть и выбирать записи другого пользователя.

Вот как выглядит models.py:

class TeamProfile(models.Model):
    teamAdmin = models.ForeignKey('auth.User', on_delete=models.CASCADE, related_name='teamprofile')
    teamName = models.CharField(max_length=300)
    team_descriptions = models.CharField(max_length=3000)
    team_logo = models.FileField(upload_to='teamProfile/team_logo', blank=True, null=True)
    # team_captain = models.ManyToManyField(PlayerProfile)
    team_players = models.ManyToManyField(PlayerProfile, related_name= 'team_player')
    created_at = models.DateTimeField(auto_now_add=True) 



    def __str__(self):
        return self.teamName
    
    
    class CompetitionProfile(models.Model):
        creator = models.ForeignKey('auth.User', on_delete=models.CASCADE, related_name='competitionprofile')
        comp_Name = models.CharField(max_length=50)
        participating_team = models.ManyToManyField(TeamProfile, related_name='participating_team')
        viewership_type = models.CharField(max_length=5, blank=True, null=True)
        organizer_contact = models.CharField(max_length=14, blank=True, null=True) 
        created_at = models.DateTimeField(auto_now_add=True)
    
    
        def __str__(self):
            return self.comp_Name

Вот как выглядит views.py :

class CompetitionCreateView(CreateView):
    model = CompetitionProfile
    form_class = ComPCreateForm
    success_url = reverse_lazy('zone')
    team = TeamProfile.objects.all()



    def form_valid(self, form):
        form.instance.creator = self.request.user
        form.instance.participating_team = User.teamprofile.all()

        # form.instance.participating_team = self.request.user.team

        return super(CompetitionCreateView, self).form_valid(form)

В этом случае, если я создаю профиль команды, другие пользователи могут видеть профиль команды, который я создал, в качестве опции для выбора в своем поле participating_team при заполнении формы профиля соревнования. Я хотел бы ограничить это только профилями команд, созданными этими пользователями. Вы не можете видеть или выбирать профиль команды, созданный другими пользователями, при заполнении формы профиля соревнования.

С этим можно справиться?

...