﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
9758	modelformset_factory forms generate error when using queryset	cyberjack17@…	nobody	"What I'm trying to do:

  * I'm building a formset with exactly seven entries, one for each day of the last week.
  * I use modelformset_factory to create my form and specify a queryset to filter the particular item and date range.

What I see:

  * The page displays the seven entries as expected. The first seven days are created fine and can be edited at any point.
  * If I try to edit additional entries, I see the following error:

(Hidden field id) Status report with this None already exists.

  * The kicker is that if I remove the queryset limitation, this error goes away. Ie, my formset includes all entries, not just the seven I want. 
  * Without the queryset, I can add / edit as many items and weeks as I want.

Here's a minimal example, which assumes you already have data stored in StatusReport. 

{{{
class StatusReport(models.Model):
   item          = models.IntegerField()
   report_date   = models.DateField()
   status        = models.CharField(max_length=10)
}}}

view:

{{{
def detail(request, item_id):

    # removed sanity checks, entry creation, etc

    StatusFormSet = modelformset_factory(StatusReport, extra=0)
    if request.method == 'POST':
        formset = StatusFormSet(request.POST)
        if formset.is_valid():
            formset.save()
    else:
        ### with error
        #limited_reports = StatusReport.objects.filter(item=item_id)
        #formset = StatusFormSet(queryset=limited_reports)
        ### without error
        formset = StatusFormSet()
    return render_to_response('manage_items.html',{'formset': formset})
}}}

and generic template
{{{
<form method=""POST"" action="""">
    <table>
        {{ formset }}
    </table>
    <input type = ""submit"" value = ""Submit"">
</form>
}}}"		closed	Forms	1.0		invalid		Carl Meyer	Accepted	0	0	0	0	0	0
