将个人用户添加到Django中的Project

时间:2019-06-18 23:21:33

标签: python django

我正在使用Django构建基本的项目管理应用程序,其中一个Project可以具有任意数量的用户。如何创建一个表单以一次添加一个用户?

Django的默认行为为多对多关系提供了多选字段。

class Project(models.Model):
    project_number = models.IntegerField()
    name = models.CharField(max_length=100)
    design_manager = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='project_design_manager', null=True, blank=True)
    permit = models.CharField(max_length=100, blank=True, default='')
    is_active = models.BooleanField(default=True)
    users = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='project_users')

我想要一个动态字段,该字段允许您一次添加一个用户。

1 个答案:

答案 0 :(得分:0)

您可以使用包含ModelChoiceField的简单表单来完成此操作。

class AddUserForm(forms.Form):
    user = forms.ModelChoiceField(queryset=User.objects.all())

...

def add_user_to_project(request, project_id):
    project = get_object_or_404(Project, pk=project_id)
    if request.method == "POST":
        form = AddUserForm(request POST)
        if form.is_valid():
            project.users.add(form.cleaned_data["user"])
            return redirect("...")
    else:
        form = AddUserForm()
    return render(request, "add_user.html", {"project": project, "form": form})