Найти - Пользователи
Полная версия: модели, бд, вывод результата запроса
Начало » Django » модели, бд, вывод результата запроса
1
Xa_xoo
Питон 3.4 Джанго 1.8 БД стандарт sqllite

на страничку выводится информация о сотруднике. Поля Фамилия, Имя, отчество, Подразделение, Должность.
модель:
class Classpro(models.Model):
    dolznost = models.CharField(max_length=100)
    def __str__(self):
        return u'%s' % (self.dolznost)
    class Meta():
        db_table = "Должность"
class Podr(models.Model):
    podrazd = models.CharField(max_length=70)
    class Meta():
        db_table = "Подразделение/Отделение"
    def __str__(self):
        return u'%s' % (self.podrazd)
class Meat(models.Model):
    logname = models.CharField(max_length=10) # login
    password = models.CharField(max_length=10) # password
    name1 = models.CharField(max_length=30) #фамилия
    name2 = models.CharField(max_length=30) #РёРјСЏ
    name3 = models.CharField(max_length=30) #отчество
    born = models.DateField()
    classpro = models.ForeignKey(Classpro)
    podr = models.ForeignKey(Podr)
    zarplata = models.IntegerField()
    achiv = models.IntegerField() # права доступа
    def __str__(self):
        return u'%s %s %s' % (self.name1, self.name2, self.name3)
    class Meta():
        ordering = ['name1']
        db_table = "Пользователи"
фрагмент вьюхи:
 else:
                                args['trueqq'] = 1
                                args['name1'] = Meat.objects.get(name1="Strashko")
                                args['name2'] = Meat.objects.get(name2="Max")
                                args['name3'] = Meat.objects.get(name3="Igorevich")
                                args['podr'] = Podr.objects.get(podrazd="0035")
                                args['pro'] = Classpro.objects.get(dolznost="enginer")
                                return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
выводит в html:
{% block self %}
<table border="1" align="center" width="100%">
    <tr height="400">
        <td width="276"><img class="selfphoto" width="250" height="350" src="{% static "static/img/selfphoto.jpg" %}"></td>
        <td>
            <label>{{ name1 }}</label><br><br>
            <label>{{ name2 }}</label><br><br>
            <label>{{ name3 }}</label><br><br>
            <label>{{ podr }}</label><br><br>
            <label>{{ pro }}</label>
        </td>
    </tr>
</table>
{% endblock %}
вопрос1: args = Meat.objects.get(name2=“Max”) * здесь я просто подставил зная , что у меня есть*
Как мне выбрать объект из бд и вывести его на странице? т.е. у сотрудника есть имя в бд, как его вывести, учитывая , что естественно имя одно значение. И конечно там будет много сотрудников и objects.filter мне тоже не помог(( я новичек, так что не серчайте… для полноты картины: (я знаю, что есть у джанго встроенная авторизация)
def login1(request):
    args = {}
    args.update(csrf(request))
    if request.method == 'GET':
        if 'logname' in request.GET:
            logname = request.GET['logname']
            if not logname:
                args['login_error1'] = "no no no"
                return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
            else:
                args['logname'] = Meat.objects.filter(logname=logname)
                if not args['logname']:
                    args['login_error1'] = "no no no"
                    return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
                else:
                    if 'password' in request.GET:
                        password = request.GET['password']
                        if not password:
                            args['login_error1'] = "no no no"
                            return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
                        else:
                            args['password'] = Meat.objects.filter(password=password)
                            if not args['password']:
                                args['login_error1'] = "no no no"
                                return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
                            else:
                                args['trueqq'] = 1
                                args['name1'] = Meat.objects.get(name1="Strashko")
                                args['name2'] = Meat.objects.get(name2="Max")
                                args['name3'] = Meat.objects.get(name3="Igorevich")
                                args['podr'] = Podr.objects.get(podrazd="0035")
                                args['pro'] = Classpro.objects.get(dolznost="enginer")
                                return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
                    else:
                        return redirect('/')
        else:
            return redirect('/')
    else:
        return redirect('/')
DOOMer
фрагмент вьюхи:
А можно полнностью код вьюхи увидеть? И по описанию не очень понятно что оная вьюха делать - выводит инфу об одном отдельно взятом сотруднике или о нескольких, выбранных по неким параметрам (имя либо что-то иное). Кусок из urls.py, описывающий паттерн для данной вьюхи тоже может помочь в понимании того, что и как лучше вам сделать.
Xa_xoo
собственно фрагмент вьюхи на эту страницу(есть в главном посте) вот он:
def login1(request):
    args = {}
    args.update(csrf(request))
    if request.method == 'GET':
        if 'logname' in request.GET:
            logname = request.GET['logname']
            if not logname:
                args['login_error1'] = "no no no"
                return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
            else:
                args['logname'] = Meat.objects.get(logname=logname)
                if not args['logname']:
                    args['login_error1'] = "no no no"
                    return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
                else:
                    if 'password' in request.GET:
                        password = request.GET['password']
                        if not password:
                            args['login_error1'] = "no no no"
                            return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
                        else:
                            args['password'] = Meat.objects.get(password=password)
                            if not args['password']:
                                args['login_error1'] = "no no no"
                                return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
                            else:
                                args['trueqq'] = 1
                                args['name1'] = Meat.objects.get(name1="Strashko")
                                args['name2'] = Meat.objects.get(name2="Max")
                                args['name3'] = Meat.objects.get(name3="Igorevich")
                                args['podr'] = Podr.objects.get(podrazd="0035")
                                args['pro'] = Classpro.objects.get(dolznost="enginer")
                                return render_to_response('self_docsup.html', args, context_instance=RequestContext(request))
                    else:
                        return redirect('/')
        else:
            return redirect('/')
    else:
        return redirect('/')

должна вывести инфу о сотруднике по пунктам. Суть в том, что вводит логин-пароль и попадает на страницу где его имя, фамилия и т.д. ( данные есть в бд) модель:
from django.db import models
class Classpro(models.Model):
    dolznost = models.CharField(max_length=100)
    def __str__(self):
        return u'%s' % (self.dolznost)
    class Meta():
        db_table = "Должность"
class Podr(models.Model):
    podrazd = models.CharField(max_length=70)
    class Meta():
        db_table = "Подразделение/Отделение"
    def __str__(self):
        return u'%s' % (self.podrazd)
class Meat(models.Model):
    logname = models.CharField(max_length=10) #login
    password = models.CharField(max_length=10) #password
    name1 = models.CharField(max_length=30) #фамилия
    name2 = models.CharField(max_length=30) #имя
    name3 = models.CharField(max_length=30) #отчество
    born = models.DateField()
    classpro = models.ForeignKey(Classpro)
    podr = models.ForeignKey(Podr)
    zarplata = models.IntegerField()
    achiv = models.IntegerField() # права доступа
    def __str__(self):
        return u'%s %s %s' % (self.name1, self.name2, self.name3)
    class Meta():
        ordering = ['name1']
        db_table = "Пользователи"

не могу выбрать в бд именно данные сотрудника который “авторизировался”и вывести их на страницу как аргументы.

html^
{% block self %}
<table border="1" align="center" width="100%">
    <tr height="400">
        <td width="276"><img class="selfphoto" width="250" height="350" src="{% static "static/img/selfphoto.jpg" %}"></td>
        <td>
            <label>{{ name1 }}</label><br><br>
            <label>{{ name2 }}</label><br><br>
            <label>{{ name3 }}</label><br><br>
            <label>{{ podr }}</label><br><br>
            <label>{{ pro }}</label>
        </td>
    </tr>
</table>
{% endblock %}
DOOMer
Суть в том, что вводит логин-пароль и попадает на страницу где его имя, фамилия и т.д. ( данные есть в бд) модель:
ИМХО, дал подобной задачи вам не стоит заниматься “велосипедостроительством” и городить специальную вьюху для логина, и последующего вывода данных о залогиненом пользователе.

В составе Django уже есть встроенная система авторизации пользователей.

http://djbook.ru/rel1.8/topics/auth/index.html
http://djbook.ru/examples/71/

А вьюху сделать максимально простой, передавать в шаблон объект request.user, и уэе в шаблоне выводить нужные поля модели пользователя {{ user.nam1 }}, {{user.name2 }} и т.п.
Xa_xoo
DOOMer
спасибо
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