2015-03-19 23 views

回答

0

models.py

class Task(models.Model):  
    name = models.CharField(max_length=100) 
    users = models.ManyToManyField(User) 

urls.py

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'), 
) 

views.py

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) 

task_detail.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> 
相關問題