Найти - Пользователи
Полная версия: ModelChoiceField
Начало » Django » ModelChoiceField
1
briz
Доброе время суток!!!
подскажыте пожалуйста, раз уж затронули тему моделей, как к полю ModelChoiceField дорисовать плюсик, как в админке???
тоесть у меня в шаблоне появляется список, но желательно при нажатии на плюсик или ссылку открыть новый шаблош для ввода в соответсвующую тейбл.
Спасибо!
securelord
<a href=“/add/” > <img src=“krestik.gif” ></a>

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

P.S. з джанго тыльки знайомлюсь…
briz
Ну clopomor и загнул … :)
securelord я не совсем то имею ввиду …. шаблон генерится автоматом по форме … тоесть как нарисовал Gnat, в шаблоне просто:
........
{{ form.as_table }}
........
в форме когда ставлю ModelChoiceField(queryset=www.objects.all()) просто формируется список с фильтром на конкретную тейблу, мне же надо дорисовать плюсик для добавления елементов в ету же тейбл.


P.S.
Я вот надумал, может свой виджет слепить ???
securelord
Я что то очень сомневаюсь что в админке “плюсик” добавляется “автоматически” (через forms). Скорее всего если есть какая то связь с другой таблицой, то подставляется этот самый плюсик.
diadya_vova
Во первых нада добавить скрипты
<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
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)
........
о так то …. :(
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB