Velvet Star Monitor

Standout celebrity highlights with iconic style.

news

form is not valid... WHY?

Writer Sophia Terry

the model:

class Operation(models.Model): operation_type = models.ForeignKey(OperationType) category = models.ForeignKey(Category, default=0) related_account = models.ForeignKey(Account, related_name = 'related_account', null = True) comments = models.TextField(null = True)

the code:

def detail(request, category_id): class OperationCategoryOnlyForm(forms.ModelForm): class Meta: model = Operation fields = ('operation_type', 'category', 'related_account', ) from django.forms.models import modelformset_factory OperationFormSet = modelformset_factory(Operation, form=OperationCategoryOnlyForm) if request.method == "POST": formset = OperationFormSet(request.POST, queryset=Operation.objects.filter(category=category_id)) if formset.is_valid(): formset.save()
# HERE IS THE FORMSET, WHICH OVERLAPS THE POSTED FORMSET - this was intentionaly to get the current result not result before save, but when you want to debug - you should pay attention at such things.
# formset = OperationFormSet(queryset=Operation.objects.filter(category=category_id)) c = {"formset" : formset,} c.update(csrf(request)) return render_to_response("reports/operation_list.html", c)

the template: UPDATED:

<form method="post" action=""> {% csrf_token %} {{ formset.management_form }} {{ formset.errors }} {{ formset.non_field_errors }} {{ formset.non_form_errors }}
<table> {% for form in formset.forms %}
tr><td> {{ form.errors }} </td><td> {{ form.non_field_errors }}</td></tr>
<tr><td>{{ form.id }}</td><td>{{ form.instance.comments }}</td><td>{{ form.operation_type }}<br>{{ form.related_account }}</td><td>{{ form.category }}</td></tr> {% endfor %}
</table>
<input type="submit" value="submit">
</form>

I found that form.is_valid() = false - but i have no idea how to get the reason WHY...

UPD - I updated the template according to comment - nothing is result....

(this is very stupid rule, that i have to write less code than question - code is self explaining and is the essence of question - Almost always the question reduces into one sentence but there's no way to reduce code)

5

1 Answer

Yeah, because you're creating another, empty formset before displaying it. Add print formset.errors before or directly after if checking for is_valid().

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy