Как добавить request.user в manytomanyfield для членов команды в django? - PullRequest
1 голос
/ 06 августа 2020

Я пытался создать настраиваемую модель команды, имеющую множество полей для членов команды, теперь у меня есть форма, которая позволяет пользователям создавать свои собственные команды, но я не понимаю, как я могу добавить request.user к участникам команды. Ниже приведены коды:

models.py

class Team(models.Model):
    name = models.CharField(max_length=64, unique=True)
    description = models.CharField(max_length=1024)
    created_at = models.DateTimeField(auto_now_add=True)
    members = models.ManyToManyField(User, through='Member')

    def __str__(self):
        return f"Team: {self.name} created on {self.created_at}\nMember(s): {self.members}"


class Member(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    team = models.ForeignKey(Team, on_delete=models.CASCADE, blank=True)

forms.py

class TeamRegistrationForm(ModelForm):
    class Meta:
        model = Team
        fields = ["name", "description"]

views.py

@login_required(login_url="/login/")
def teamregister(request):
    if request.method == "POST":
        form = TeamRegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            form.instance.members.add(request.user) # doesn't work :[
            print(form.save())
            messages.success(request, "Your team has been successfully registered!")
            return redirect("dashboard")
    else:
        form = TeamRegistrationForm()

    return render(request, "users/team.html", {"form": form})

Я пытался используйте form.instance.members.add(request.user), чтобы добавить зарегистрированного пользователя к члену группы, но это не сработало. Пожалуйста, помогите: [

1 Ответ

1 голос
/ 06 августа 2020

Это добавлено к отношению, но вы не распечатываете элементы в отношении. Вы распечатываете диспетчер. Действительно, вы пишете {self.members}, и это менеджер, вы должны переписать это в {self.manager<b>.all()</b>}. A Manager будет, если вы не реализуете его иначе, вернет <i>ModelName</i>.None:

class Team(models.Model):
    # &hellip;

    def __str__(self):
        return f'Team: {self.name} created on {self.created_at}\nMember(s): {<b>self.members.all()</b>}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...