Передо мной встала задача в том, чтобы вывести форму, в которой должны построчно находиться два поля, в одном из которых я вношу название средства связи (telegram, viber и т.д.), а в другом данные, по которым можно найти человека в том или ином средстве. При этом, должна быть возможность удалять и добавлять строки с этими самыми полями. Вот, что я уже успел сделать, опираясь на официальную документацию:
models.pyclass Extra(models.Model):
extra = models.CharField(max_length=100)
class ExtraContact(models.Model):
claim = models.ForeignKey(Extra)
text = models.CharField(max_length=255)
forms.pyclass ExtraContactForm(ModelForm):
class Meta:
model = ExtraContact
exclude = ()
ExtraContactFormset = inlineformset_factory(Extra, ExtraContact, form=ExtraContactForm, extra=1)
views.pydef edit_contacts(request, pk):
extra = get_object_or_404(Extra, pk=pk)
extra1 = ExtraContactFormset(request.POST, instance=extra)
if request.method == 'POST':
if extra1.is_valid():
extra = extra1.save(commit=False)
extra.save()
return redirect('job:list_contacts', pk=extra.pk)
else:
extra1 = ExtraContactFormset(instance=extra)
return render(request, 'job/contacts_form.html', {
'extra1': extra1,
})
list_contacts.html{% extends 'job/base.html' %}
{% block content %}
<h1>Контакты:</h1>
<p>{{ extra }}</p>
<a class="btn btn-default" href="{% url 'job:edit_contacts' pk=contact.pk %}"><span class="glyphicon glyphicon-pencil">Изменить</span></a>
{% endblock %}
contacts_form.html{% extends 'job/base.html' %}
{% load staticfiles %}
{% block content %}
{% if message %}
<p>{{ message }}</p>
{% endif %}
<h1>Редактирование информации о контактах</h1>
<div class="forms">
<div class="form2">
<h2>Extra</h2>
<form method="POST" class="edit-contacts">{% csrf_token %}
{{ extra1.management_form }}
{{ extra1.as_p }}
<button type="submit" class="save btn btn-default">Сохранить</button>
</form>
</div>
</div>
{% endblock %}
Сейчас при открытии страницы
list_contacts.html выскакивает ошибка
'ModelBase' object is not iterable, а при открытии
contacts_form.html Page not found.