briz
Апрель 16, 2008 19:58:17
Доброе время суток!!!
подскажыте пожалуйста, раз уж затронули тему моделей, как к полю ModelChoiceField дорисовать плюсик, как в админке???
тоесть у меня в шаблоне появляется список, но желательно при нажатии на плюсик или ссылку открыть новый шаблош для ввода в соответсвующую тейбл.
Спасибо!
securelord
Апрель 16, 2008 20:44:53
<a href=“/add/” > <img src=“krestik.gif” ></a>
“/add/” - ссылка на функцию в views.py, которая (функция) выводит шаблон с тем что тебе надо.
clopomor
Апрель 16, 2008 23:47:46
теж цікавить подібне, але для випадку якщо поле в формах, які автоматично генеруються по моделі, тобто є список вибору який автоматично генерується в формі, але щоб можна було з тієї ж форми викликати форму добавлення нового елементу в той список(при відсутності такого). Тут з добавленням коду в шаблон не пройде, форма ж автоматично формується і туди уже передається готовою…
P.S. з джанго тыльки знайомлюсь…
briz
Апрель 17, 2008 09:25:08
Ну clopomor и загнул … :)
securelord я не совсем то имею ввиду …. шаблон генерится автоматом по форме … тоесть как нарисовал Gnat, в шаблоне просто:
........
{{ form.as_table }}
........
в форме когда ставлю ModelChoiceField(queryset=www.objects.all()) просто формируется список с фильтром на конкретную тейблу, мне же надо дорисовать плюсик для добавления елементов в ету же тейбл.
P.S.Я вот надумал, может свой виджет слепить ???
securelord
Апрель 17, 2008 11:12:06
Я что то очень сомневаюсь что в админке “плюсик” добавляется “автоматически” (через forms). Скорее всего если есть какая то связь с другой таблицой, то подставляется этот самый плюсик.
diadya_vova
Апрель 17, 2008 12:03:28
Во первых нада добавить скрипты
<script type=“text/javascript” src=“/jsi18n/”></script>
<script type=“text/javascript” src=“/media/js/core.js”></script>
<script type=“text/javascript” src=“/media/js/admin/RelatedObjectLookups.js”></script>
И еще вроже нужна функция калбека для form_for_model/instance
def item_field_callback(field, **kwargs):
if isinstance(field, models.ManyToManyField):
kwargs = forms.SelectMultiple(attrs={'class':'vSelectMultipleField'})
elif isinstance(field, models.ForeignKey):
kwargs = forms.Select(attrs={'class':'vSelectField'})
Вся соль в класах HTML-инпутов “vSelectField”, “vSelectMultipleField”
briz
Апрель 17, 2008 19:06:40
diadya_vova а разве ето не стандартная функция которая определяет если поле ForeignKey то ставит выпадающий список, а если ManyToMany то селектор ???
у меня шото нечего не меняется … :(
шаблон:
..........
<script type="text/javascript" src="/jsi18n/"></script>
<script type="text/javascript" src="/media/js/core.js"></script>
<script type="text/javascript" src="/media/js/admin/RelatedObjectLookups.js"></script>
<form action="." method="POST">
<table>
{{ form.as_table }}
</table>
</form>
.........
форма:
........
def item_field_callback(field, **kwargs):
if isinstance(field, models.ManyToManyField):
kwargs['widget'] = forms.SelectMultiple(attrs={'class':'vSelectMultipleField'})
elif isinstance(field, models.ForeignKey):
kwargs['widget'] = forms.Select(attrs={'class':'vSelectField'})
AddGForm = form_for_model(TABLE_MODEL, formfield_callback=item_field_callback)
........
о так то …. :(