Форум сайта python.su
Добрый всем день камрады.
Джанго только учу и паралельно пробую сотворить маленький сайтик.
Так вот, понадобилось мне на сайте добавить список выбора. Но заполнять список данными в HTML файле мне не улыбается, потому что списки будут весьма внушительные. Да и следить за их актуальность не совсем удобно. По сему я решил заполнять список динамически, взяв данные из базы данных.
Мой метод весьма прост
models
class Pol(models.Model): pol = models.CharField('Пол', max_length=1) def __unicode__(self): return self.pol
def index(request):
ld = Pol.objects.all()
return render_to_response('phonelist/main.html', {'ld': ld})
<select name="slist"> <option value="0">Список полов</option> {% for i in ld %} <option value="{{ i.id }}">{{ i.pol }}</option> {% endfor %} </select>
SEX_MALE = 1 SEX_FEMALE = 2 SEX_CHOICES = ( (SEX_MALE, _(u'Male')), (SEX_FEMALE, _(u'Female')) ) class Title(models.Model): name = models.CharField() class People(models.Model): name = models.CharField() sex = models.IntegerField(choices=SEX_CHOICES) title = models.ForeignKey(Title) class PeopleForm(forms.ModelForm): class Meta: model=People def page(): form = PeopleForm(request.GET or None) if form.is_valid(): form.save() return redirect(reverse('next-page')) context = dict(form=form) return direct_to_template(request, 'page.html', context)
Офлайн
ZerG
Скажите почему надо писать кода больше? Зачем так усложнять?:
ZerG
Зачем для запроса в существующий уже класс модели еще один подкласс если я и так получаю данные ?
class PeopleForm(forms.ModelForm): class Meta: model=People
class PeopleForm(forms.Form) #заметь родитель поменялся name = forms.CharField() sex = forms.ChoiceField(choices=SEX_CHOICES) #тут я заменил тип поля с IntegerField на ChoiceField title = forms.ModelChoiceField(queryset=Title.objects.all())
Офлайн
Спасибо суть я уловил ! Попробую конечно сделать правильно - но пока что-то не выходит !
Согласен. Я буду делать лишнюю работу. Вот это уже аргумент. Тогда получается что для моего конкретного случая надо делать так
Модели Моя существующая модель. Заполнена данными типа (Специалист, Начальник, Дворник, ….) class Dolzhnost(models.Model): dolzhnost = models.CharField('Должность', max_length=100)
def __unicode__(self):
return self.dolzhnost
Добавляем класс форм
class DForm(forms.ModelForm):
class Meta:
modelolzhnost
Далее, нам надо вьюшка
Сейчас у меня основной шаблон вызывается функцией index
def index(request):
return render_to_response('phonelist/main.html')
Может кто набросает функцию вью ? Потому что угадать не получается а понять тоже! То есть у меня проблема не с моделями а с самой функцией. А если еще и комменты напишите так вобще щастье будет !
Отредактировано ZerG (Ноя. 7, 2012 08:43:57)
Офлайн
Формы нужны для записи информации о пользователе и т.п. в базу данных.
Для вывода из БД в шаблон формы можно не использовать.
Отредактировано Evgen_irk (Ноя. 7, 2012 09:44:24)
Офлайн
ТО есть - можно смело использовать мой вариант ?
Офлайн
Могу ошибаться (опыт с django небольшой), но думаю что да.
Офлайн