我正在使用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')
我想要一个动态字段,该字段允许您一次添加一个用户。
答案 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})