У меня есть форма и набор форм для одной и той же модели. Первая форма, которую я имею, написана на HTML, потому что мне нужны были какие-то виджеты, которых у Django нет в коробке.
models.py
class MyModel(models.Model):
name = models.CharField(max_length=255, null=True, blank=True)
phone_number = models.CharField(max_length=255, null=True, blank=True)
some_other_field = models.CharField(max_length=255, null=True, blank=True)
views.py
class MyView(View):
def get(self, request):
formset = modelformset_factory(MyModel, fields=('name', 'some_other_field', extra=2)
return render(request, 'index.html', context={'formset': formset})
def post(self, request):
formset = modelformset_factory(MyModel, request.POST, fields=('name', 'some_other_field'))
if formset.is_valid():
formset.save()
MyModel.objects.create(name=request.POST.get('name'))
return HttpResponse("done")
index. html
<form method="post" action="">
<input type="text" name="name">
{{ formset.management_form }}
{% for form in formset %}
{{form}}
{% endfor %}
</form>
Это не работает вообще , вызвать запрос. POST отправляет все несоответствующие данные в набор моделей, например, в этом случае в поле name
, и я получаю эту ошибку.
AttributeError: 'QueryDict' object has no attribute '__name__'