Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 16, 2008 19:58:17

briz
От:
Зарегистрирован: 2008-02-19
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField

Доброе время суток!!!
подскажыте пожалуйста, раз уж затронули тему моделей, как к полю ModelChoiceField дорисовать плюсик, как в админке???
тоесть у меня в шаблоне появляется список, но желательно при нажатии на плюсик или ссылку открыть новый шаблош для ввода в соответсвующую тейбл.
Спасибо!



Отредактировано (Апрель 16, 2008 19:59:28)

Офлайн

#2 Апрель 16, 2008 20:44:53

securelord
От:
Зарегистрирован: 2006-08-31
Сообщения: 129
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField

<a href=“/add/” > <img src=“krestik.gif” ></a>

“/add/” - ссылка на функцию в views.py, которая (функция) выводит шаблон с тем что тебе надо.



Отредактировано (Апрель 16, 2008 20:47:07)

Офлайн

#3 Апрель 16, 2008 23:47:46

clopomor
От:
Зарегистрирован: 2007-06-12
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField

теж цікавить подібне, але для випадку якщо поле в формах, які автоматично генеруються по моделі, тобто є список вибору який автоматично генерується в формі, але щоб можна було з тієї ж форми викликати форму добавлення нового елементу в той список(при відсутності такого). Тут з добавленням коду в шаблон не пройде, форма ж автоматично формується і туди уже передається готовою…

P.S. з джанго тыльки знайомлюсь…



Офлайн

#4 Апрель 17, 2008 09:25:08

briz
От:
Зарегистрирован: 2008-02-19
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField

Ну clopomor и загнул … :)
securelord я не совсем то имею ввиду …. шаблон генерится автоматом по форме … тоесть как нарисовал Gnat, в шаблоне просто:

........
{{ form.as_table }}
........
в форме когда ставлю ModelChoiceField(queryset=www.objects.all()) просто формируется список с фильтром на конкретную тейблу, мне же надо дорисовать плюсик для добавления елементов в ету же тейбл.


P.S.
Я вот надумал, может свой виджет слепить ???



Отредактировано (Апрель 17, 2008 09:27:17)

Офлайн

#5 Апрель 17, 2008 11:12:06

securelord
От:
Зарегистрирован: 2006-08-31
Сообщения: 129
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField

Я что то очень сомневаюсь что в админке “плюсик” добавляется “автоматически” (через forms). Скорее всего если есть какая то связь с другой таблицой, то подставляется этот самый плюсик.



Офлайн

#6 Апрель 17, 2008 12:03:28

diadya_vova
От:
Зарегистрирован: 2007-11-03
Сообщения: 41
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField

Во первых нада добавить скрипты
<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”



Офлайн

#7 Апрель 17, 2008 19:06:40

briz
От:
Зарегистрирован: 2008-02-19
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField

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)
........
о так то …. :(



Отредактировано (Апрель 17, 2008 19:07:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version