简体   繁体   English

如何为 django 中的团队成员将 request.user 添加到 manytomanyfield?

[英]How to add request.user to manytomanyfield for team members in django?

I was trying to create a custom team model having a manytomanyfield for team members, now i have a form that allows users to create their own team(s), but i dont understand how i can add request.user to the members of the team.我正在尝试创建一个自定义团队 model 为团队成员提供多字段,现在我有一个允许用户创建自己的团队的表单,但我不明白如何将 request.user 添加到团队成员. Below are the codes:以下是代码:

models.py模型.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 forms.py

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

views.py视图.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})

I tried to use form.instance.members.add(request.user) to add the logged in user to the member of the team but it didn't work.我尝试使用form.instance.members.add(request.user)将登录用户添加到团队成员中,但没有成功。 Please help:[请帮忙:[

It is added to the relation, but you do not print the items in the relation.它被添加到关系中,但您不打印关系中的项目。 You print the manager.你打印经理。 Indeed, you write {self.members} , and that is the manager, you should rewrite this to {self.manager .all() } .确实,你写的是{self.members} ,那是经理,你应该把它改写成{self.manager .all() } A Manager will, unless you implement it otherwise return ModelName .None :除非您实施,否则Manager将返回ModelName .None

class Team(models.Model):
    # …

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM