【发布时间】:2020-11-26 23:56:28
【问题描述】:
我试图为团队成员创建一个自定义团队模型,该模型具有一个 manytomanyfield,现在我有一个允许用户创建自己的团队的表单,但我不明白如何将 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) 将已登录用户添加到团队成员中,但没有成功。请帮忙:[
【问题讨论】:
-
什么不起作用?它会引发什么错误?
-
在 django shell 中,当我打印我们的查询集时,它打印出创建的团队中没有成员
<QuerySet [<Team: Team: volt's squad created on 2020-08-06 14:58:53.398269+00:00 Member(s): auth.User.None>]>而我想要的是当前登录的用户应该出现在成员中