Простое? отображение данных на форме (логика работы) - Python
Формулировка задачи:
PostgreSQL, django 1.9, python 2.7.9
Прошел учебник.
В нем формы генерятся в html шаблонах, но на просторах интернета часто можно увидеть, что люди создают формы в forms.py (собственно вне учебника в руководстве по django описываюстя прелести создание форм в джанго, а не в html с помощью автоматических виджетов)
Итак происходит попытка сделать достаточно простую штуку - показать пользователю выпадаюий список из базы данных.:
html:
forms.py:
views.py:
модель:
Собственно я так и не осознал на 100% логику движения данных в django... Можно подробно - кто что откуда берет и куда отдает?
А так же в базе хранятся названия на русском, сейчас вот этот код выдает это:
Листинг программы
- <form action="/your-name/" method="post">
- {% csrf_token %}
- Выберите отделение:<br>
- {{ form }}
- <input type="submit" value="Submit" />
- </form>
Листинг программы
- from django import forms
- from .models import DirDep
- dep_list = {DirDep.objects.values('dep_name'):DirDep.objects.values('dep_name')}
- class NameForm(forms.Form):
- favorite_colors = forms.CharField(label='Список отделений',widget=forms.Select(choices=dep_list))
Листинг программы
- def get_name(request):
- # if this is a POST request we need to process the form data
- if request.method == 'POST':
- # create a form instance and populate it with data from the request:
- form = NameForm(request.POST)
- # check whether it's valid:
- if form.is_valid():
- # process the data in form.cleaned_data as required
- # ...
- # redirect to a new URL:
- return HttpResponseRedirect('/thanks/')
- # if a GET (or any other method) we'll create a blank form
- else:
- form = NameForm()
- return render(request, 'devreg/name.html', {'form': form})
Листинг программы
- class DirDep(models.Model):
- dep_sid = models.IntegerField(primary_key=True)
- lpu_sid = models.IntegerField(blank=True, null=True)
- dep_name = models.CharField(max_length=256, blank=True, null=True)
- def __unicode__(self):
- return self.dep_name
- class Meta:
- managed = False
- db_table = 'dir_dep'
Спойлер
Решение задачи: «Простое? отображение данных на форме (логика работы)»
textual
Листинг программы
- class LinkSensorRoomLink(models.Model):
- sensor_room_link_sid = models.IntegerField(primary_key=True)
- room_bed_link_sid = models.ForeignKey(LinkRoomBedLink, db_column = 'room_bed_link_sid')
- sensid = models.CharField(max_length=64, blank=True, null=True)
- sysdate = models.DateTimeField(blank=True, null=True)
- class Meta:
- managed = False
- db_table = 'link_sensor_room_link'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д