Форум сайта python.su
Здравствуйте. Такая проблема. У меня на странице форма и формсет.
<form action="" method="post">
<table width="35%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Название организации:</td>
<td>{{ form.name }}</td></tr>
<tr>
<td>Рубрика:</td>
<td>{{ form.rubr }}</td></tr>
<tr>
<td>Город:</td>
<td>{{ form.city }}</td></tr>
<tr>
<td>Улица:</td>
<td>{{ form.street }}</td></tr>
<tr>
<td>Дом:</td>
<td>{{ form.house }}</td></tr>
<tr><td colspan="2"> </td></tr>
<tr><td>Телефоны:</td><td></td></tr>
{% for telform in telformset %}
<tr>
<td></td><td>{{ telform.phone }}</td></tr>
{% endfor %}
<tr><td colspan="2"> </td></tr>
<tr>
<td><div align="center"><input type="submit" value="Изменить" name="submit" style='width: 100px;'></div></td>
<td><div align="center"><a href="/db/organisations"><input type="button" value="Отмена" name="button" style='width: 100px;'></a></div></td>
</tr>
</table>
</form>
telephones=mdl.Telephones.objects.filter(org=request.GET[''])
if request.method=='POST':
EntryFormSet=formset(frm.TelForm(request.POST, prefix="telephone"),extra=len(telephones))
form=frm.OrgForm(request.POST,prefix="organisation")
telformset=EntryFormSet()
if form.is_valid() and telformset.is_valid():
...
class Telephones (models.Model):
phone = models.CharField(max_length=15)
org = models.ForeignKey(Organisation)
class Meta:
ordering = ["org"]
def __unicode__(self):
return self.phone
Офлайн
Видать, кстати, дело не в префиксе:
Exception Value: ‘TelForm’ object has no attribute ‘__name__’
Exception Location: d:\python26\lib\site-packages\django-1.1.1-py2.6.egg\django\forms\formsets.py in formset_factory, line 310
310. return type(form.__name__ + ‘FormSet’, (formset,), attrs)
Как исправить, подскажите?
Офлайн
Может быть вы наконец покажите код, который создает формсет?
Судя по фотографии, вы в фабрику передаете объект формы, а не класс.
Офлайн
да, переделал вот так:
def changeorg(request): #Изменение организации
telephones=mdl.Telephones.objects.filter(org=request.GET[''])
if request.method=='POST':
EntryFormSet=formset(frm.TelForm,extra=len(telephones))
form=frm.OrgForm(request.POST,prefix="org")
telformset=EntryFormSet(request.POST,prefix="tel")
if form.is_valid() and telformset.is_valid():
...
else:
EntryFormSet=formset(frm.TelForm,extra=len(telephones))
org=mdl.Organisation.objects.filter(id=request.GET[''])
telformset=EntryFormSet(prefix='tel')
form=frm.OrgForm(initial={
'name':org[0].name,
'street':org[0].street,
'house':org[0].house,
'rubr':org[0].rubr.id,
'city':org[0].city.id
},prefix='org')
...
Офлайн
Ну еще у меня в самом начале строка:
from django.forms.formsets import formset_factory as formset
Офлайн
по докам я так понял, надо что то с ManagementForm мутить, но вот что то не пойму с какой стороны зайти.
Добавляю в шаблон {{ telformset.management_form }} и ничего не происходит. может не туда добавляю?
А еще, судя по-всему, надо какие то дополнительные атрибуты прописывать … Короче, пока так и не разобрался …
Офлайн
Офлайн