Django Formset заполняется, когда оно должно быть пустым - PullRequest
1 голос
/ 16 сентября 2010

Моя цель - создать набор форм, в котором перечислены 5 версий одной формы По отправке формы следует создать заполненные формы в БД.

Моя проблема в том, что формы приходят с данными. Что плохо Есть мысли о том, что я могу делать не так?

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>

1 Ответ

3 голосов
/ 17 сентября 2010

apollo13 на канале irc django выяснил ответ.

Мне нужно добавить набор запросов

Правки

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