Форум сайта python.su
С наступающим Новым Годом! в преддверии праздника хочу поинтересоваться, как выбрать из базы только 1 столбец из таблицы для вывода в выпадающий список формы? Что-то гугление ничего не дало. Или нужно использовать другое решение?
Офлайн
Если используйте версию django >=1.3, то делается так:
Blog.objects.values('name', 'entry__headline')
[{'name': 'My blog', 'entry__headline': 'An entry'},
{'name': 'My blog', 'entry__headline': 'Another entry'}, ...]
Офлайн
С новым годом! Версия 1.2.1
Офлайн
Если делаю так:
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 столбец.
Не решить никак проблему…
Офлайн
если возможно выложи модельки и как выглядит функция __unicode__ у Lamp
Офлайн
Вот модель 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)
Офлайн
pal201А что мешает изменить метод __unicode__
В таком варианте:
lamp=forms.ModelChoiceField(label=u'Выберите лампу', queryset=Lamp.objects.all())
def __unicode__(self):
return self.lamp_type
Офлайн
Остальные столбцы нужны в других формах. а так их нельзя будет использовать… правильно?
и попутно еще хочу поинтересоваться, как изменить вывод html, например мне нужно расположить поля select в одну строку, только переходить на div?
Офлайн
Я бы сделал по другому, все эти поля вынести в отдельные таблицы (тип, база, мощность), из таблицы Lamp сделать три поля ForeignKey на эти таблицы, соответственно проблем которые выше исчезнут. По поводу вывода кастомной формы, смотрите официальную документацию ( https://docs.djangoproject.com/en/1.3/topics/forms/#customizing-the-form-template ), там есть ответы на 90% ваших вопросов, ещё на 5% вопросов, ответы можно найти в google.ru.
Офлайн
Если делаю так:генерируйте choices в __init__ формы
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 столбец.
Не решить никак проблему…
Офлайн