Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何通过表单将现有用户添加到模型对象中的ManyToManyField_Django_Django Models_Django Forms_Django Views - Fatal编程技术网

Django 如何通过表单将现有用户添加到模型对象中的ManyToManyField

Django 如何通过表单将现有用户添加到模型对象中的ManyToManyField,django,django-models,django-forms,django-views,Django,Django Models,Django Forms,Django Views,我试图找出如何用数据库中的用户列表填充下拉选择表单。提交表单时,我希望将所选用户添加到任务模型对象ManyToMany users字段。然而,这样做的逻辑让我感到困惑。如何使用模型对象列表填充表单,以及如何捕获views.py文件中提交的对象?models.py class Task(models.Model): name = models.CharField(max_length=100) users = models.ManyToManyField(User) fr

我试图找出如何用数据库中的用户列表填充下拉选择表单。提交表单时,我希望将所选用户添加到任务模型对象ManyToMany users字段。然而,这样做的逻辑让我感到困惑。如何使用模型对象列表填充表单,以及如何捕获views.py文件中提交的对象?

models.py

class Task(models.Model):    
    name = models.CharField(max_length=100)
    users = models.ManyToManyField(User)
from django.conf.urls import patterns, url

urlpatterns = patterns('app.views',
    url(r'^task/(?P<task_id>\d+)/$', 'task', name='task'),
    url(r'^task/(?P<task_id>\d+)/adduser/$', 'add_user', name='add_user'),
)
from django import forms
from django.shortcuts import get_object_or_404, redirect, render

from app.models import Task

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

def task(request, task_id):
    task = get_object_or_404(Task, pk=task_id)
    return render(request, 'task_detail.html',
                  {'task': task, 'form': AddUserForm()}

def add_user(request, task_id):
    task = get_object_or_404(Task, pk=task_id)
    if request.method == 'POST':
        form = AddUserForm(request.POST)
        if form.is_valid():
            task.users.add(form.cleaned_data['user'])
    return redirect('task', task_id)
url.py

class Task(models.Model):    
    name = models.CharField(max_length=100)
    users = models.ManyToManyField(User)
from django.conf.urls import patterns, url

urlpatterns = patterns('app.views',
    url(r'^task/(?P<task_id>\d+)/$', 'task', name='task'),
    url(r'^task/(?P<task_id>\d+)/adduser/$', 'add_user', name='add_user'),
)
from django import forms
from django.shortcuts import get_object_or_404, redirect, render

from app.models import Task

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

def task(request, task_id):
    task = get_object_or_404(Task, pk=task_id)
    return render(request, 'task_detail.html',
                  {'task': task, 'form': AddUserForm()}

def add_user(request, task_id):
    task = get_object_or_404(Task, pk=task_id)
    if request.method == 'POST':
        form = AddUserForm(request.POST)
        if form.is_valid():
            task.users.add(form.cleaned_data['user'])
    return redirect('task', task_id)
任务详细信息.html

<form action="{% url 'add_user' task.id %}" method="POST">
    {% csrf_token %}

    <h1>{{ task.name }}</h1>

    <ul>
    {% for u in task.users.all %}
        <li>{{ u }}</li>
    {% endfor %}
    </ul>

    <p>Add another user</p>
    {{ form.as_p }}
    <button>Add</button>

</form>

{%csrf_令牌%}
{{task.name}
    {%u在task.users.all%}
  • {{u}
  • {%endfor%}
添加其他用户

{{form.as_p}} 添加