Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 31, 2011 14:51:29

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField выбор столбца из базы

С наступающим Новым Годом! в преддверии праздника хочу поинтересоваться, как выбрать из базы только 1 столбец из таблицы для вывода в выпадающий список формы? Что-то гугление ничего не дало. Или нужно использовать другое решение?



Офлайн

#2 Янв. 1, 2012 14:11:41

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

ModelChoiceField выбор столбца из базы

Если используйте версию django >=1.3, то делается так:

Blog.objects.values('name', 'entry__headline')
[{'name': 'My blog', 'entry__headline': 'An entry'},
{'name': 'My blog', 'entry__headline': 'Another entry'}, ...]
Документация: https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values



Офлайн

#3 Янв. 1, 2012 15:57:04

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField выбор столбца из базы

С новым годом! Версия 1.2.1



Офлайн

#4 Янв. 1, 2012 21:53:35

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField выбор столбца из базы

Если делаю так:
lamp=Lamp.objects.all()
lp =
list_level = forms.ChoiceField(label='Тип лампы', widget=forms.Select, choices=lp)
то выводится то, что нужно, но нужно перезапускать сервер при изменении значений.
########################################################
В таком варианте:
lamp=forms.ModelChoiceField(label=u'Выберите лампу', queryset=Lamp.objects.all())
выводятся все значения, а мне нужно только 1 столбец.
Не решить никак проблему…



Офлайн

#5 Янв. 2, 2012 08:01:15

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

ModelChoiceField выбор столбца из базы

если возможно выложи модельки и как выглядит функция __unicode__ у Lamp



Офлайн

#6 Янв. 2, 2012 20:33:28

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField выбор столбца из базы

Вот модель lamp
class Lamp(models.Model):
lamp_type=models.CharField(max_length=100)
lamp_base=models.CharField(max_length=50)
lamp_power=models.CharField(max_length=50)
def __unicode__(self):
return ‘%s %s %s’ % (self.lamp_type, self.lamp_base, self.lamp_power)



Офлайн

#7 Янв. 3, 2012 05:52:48

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

ModelChoiceField выбор столбца из базы

pal201
В таком варианте:
lamp=forms.ModelChoiceField(label=u'Выберите лампу', queryset=Lamp.objects.all())
А что мешает изменить метод __unicode__
def __unicode__(self):
return self.lamp_type



Офлайн

#8 Янв. 3, 2012 20:58:30

pal201
От:
Зарегистрирован: 2010-01-05
Сообщения: 83
Репутация: +  0  -
Профиль   Отправить e-mail  

ModelChoiceField выбор столбца из базы

Остальные столбцы нужны в других формах. а так их нельзя будет использовать… правильно?
и попутно еще хочу поинтересоваться, как изменить вывод html, например мне нужно расположить поля select в одну строку, только переходить на div?



Офлайн

#9 Янв. 4, 2012 09:46:49

magnet85
От:
Зарегистрирован: 2009-04-13
Сообщения: 91
Репутация: +  2  -
Профиль   Отправить e-mail  

ModelChoiceField выбор столбца из базы

Я бы сделал по другому, все эти поля вынести в отдельные таблицы (тип, база, мощность), из таблицы Lamp сделать три поля ForeignKey на эти таблицы, соответственно проблем которые выше исчезнут. По поводу вывода кастомной формы, смотрите официальную документацию ( https://docs.djangoproject.com/en/1.3/topics/forms/#customizing-the-form-template ), там есть ответы на 90% ваших вопросов, ещё на 5% вопросов, ответы можно найти в google.ru.



Офлайн

#10 Янв. 4, 2012 13:14:48

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

ModelChoiceField выбор столбца из базы

Если делаю так:
lamp=Lamp.objects.all()
lp =
list_level = forms.ChoiceField(label='Тип лампы', widget=forms.Select, choices=lp)
то выводится то, что нужно, но нужно перезапускать сервер при изменении значений.
########################################################
В таком варианте:
lamp=forms.ModelChoiceField(label=u'Выберите лампу', queryset=Lamp.objects.all())
выводятся все значения, а мне нужно только 1 столбец.
Не решить никак проблему…
генерируйте choices в __init__ формы

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version