2010-09-16 63 views
1

我的目標是有一個formset列出5個版本的同一個表單。在提交表格時,應在DB中創建填好的表格。Django Formset填充時應該是空的

我的問題是表單重新填充數據。哪個不好。有關我可能做錯什麼的想法?

Models.py

from django.db import models 
from django.contrib.auth.models import User 

PRIORITIES = (
    ('1', 'High'), 
    ('2', 'Medium'), 
    ('3', 'Low'), 
) 

class Todo(models.Model): 
    task = models.CharField(max_length=200) 
    owner = models.ForeignKey(User) 
    priority = models.CharField(max_length=10, choices=PRIORITIES) 
    creation_date = models.DateField('date created', blank=True, null=True) 
    due_date = models.DateField('date due', blank=True, null=True) 
    completion_date = models.DateField('date complete', blank=True, null=True) 
    completed = models.BooleanField() 
    def __unicode__(self): 
     return self.task 

Forms.py

from django import forms 
from pooflinger.todo.models import Todo 
from django.forms import ModelForm 
from django.forms.models import modelformset_factory 

TodoFormSet = modelformset_factory(Todo, max_num=2,) 

class TodoForm(forms.ModelForm): 

    class Meta: 
     model = Todo 

Views.py

def todo_form(request): 
    user = request.user 
    current_date = datetime.now() 
    if request.method == 'POST': 
     formset = TodoFormSet(request.POST) 
     if formset.is_valid(): 
      formset.save() 
      return HttpResponseRedirect('/todo/') 
    else: 
     formset = TodoFormSet() 
    return render_to_response('todo/todo_formset.html', { 
     'user': user, 
     'formset': formset, 
     'current_date': current_date, 
    }, context_instance=RequestContext(request)) 

表格模板

<form method="post" action=""> 
    <table> 
     {{ formset }} 
    </table> 
     <button class="glue primary" type="submit" value="Submit">Submit</button></p> 

</form> 

回答

2

apollo13 on irc django channel找出答案。

我需要添加一個查詢集

編輯

qs = Todo.objects.none() 
formset = TodoFormSet(queryset=qs) 

最終代碼

def todo_form(request): 
    user = request.user 
    current_date = datetime.now() 
    qs = Todo.objects.none() 
    if request.method == 'POST': 
     formset = TodoFormSet(request.POST) 
     if formset.is_valid(): 
      formset.save() 
      return HttpResponseRedirect('/todo/') 
    else: 
     formset = TodoFormSet(queryset=qs) 
    return render_to_response('todo/todo_formset.html', { 
     'user': user, 
     'formset': formset, 
     'current_date': current_date, 
    }, context_instance=RequestContext(request)) 
+0

它既是奇數和在文檔中的https://docs.djangoproject。 COM/EN /開發/主題/表格/ modelforms /#變化最查詢集 – mrmagooey 2013-05-03 05:51:01