Добавление отдельных пользователей в проект в Django - PullRequest
0 голосов
/ 19 июня 2019

Я создаю базовое приложение для управления проектами, используя 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 голосов
/ 19 июня 2019

Вы можете сделать это с помощью простой формы, содержащей 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})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...