python - objects.all() query not working -
i trying make form user creation through django. user(henceforth developer) can choose list of supervisors himself registered. problem is, not getting list of supervisors query. when use objects.get(), receive error 2 objects received. means queries getting rows database.
models.py
from django.db import models class userprofile(models.model): name = models.charfield(max_length=50,verbose_name="name") login = models.charfield(max_length=(25),verbose_name="login") password = models.charfield(max_length=100, verbose_name="password") phone = models.charfield(max_length=20, verbose_name="phone number", null=true, default=none, blank=true) born_date = models.datefield(verbose_name="born date" , null=true,default=none, blank=true) last_connection = models.datetimefield(verbose_name="date of last connection" , null=true, default=none, blank=true) email = models.emailfield(verbose_name="email") years_seniority = models.integerfield(verbose_name="seniority", default=0) date_created = models.datefield(verbose_name="date of birthday", auto_now_add=true) def __str__(self): return self.name class supervisor(userprofile): specialisation = models.charfield(max_length=50, verbose_name="specialisation") class developer(userprofile): supervisor = models.foreignkey(supervisor, verbose_name="supervisor") the form view create_developer.py -
from django.shortcuts import render django.http import httpresponse tasksmanager.models import supervisor, developer # view create_developer def page(request): error = false # if form has posted if request.post: if 'name' in request.post: name = request.post.get('name', '') else: error=true if 'login' in request.post: login = request.post.get('login', '') else: error=true if 'password' in request.post: password = request.post.get('password', '') else: error=true if 'supervisor' in request.post: supervisor_id = request.post.get('supervisor', '') else: error=true if not error: supervisor = supervisor.objects.get(id = supervisor_id) new_dev = developer(name=name, login=login, password=password,supervisor=supervisor) new_dev.save() return httpresponse("developer added") else: return httpresponse("an error occured") else: supervisors_list = supervisor.objects.all() return render(request, 'en/public/create_developer.html') template create_developer.html
{% extends "base.html" %} {% block title_html %} create developer {% endblock %} {% block h1 %} create developer {% endblock %} {% block article_content %} <form method="post" action="{% url 'create_developer' %}" > <table> <tr> <td>name</td> <td> <input type="text" name="name" /> </td> </tr> <tr> <td>login</td> <td> <input type="text" name="login" /> </td> </tr> <tr> <td>password</td> <td> <input type="text" name="password" /> </td> </tr> <tr> <td>supervisor</td> <td> <select name="supervisor"> {% supervisor in supervisors_list %} <option value="{{ supervisor.id }}">{{ supervisor.name}}</option> {% endfor %} </select> </td> </tr> <tr> <td></td> <td> <input type="submit" value="valid" /> </td> </tr> </table> </form> {% endblock %} the supervisor select list should show list. getting empty list there. output of {{ supervisors_list|length }} zero.
how debug this? 
you have pass context html:
from django.shortcuts import render django.http import httpresponse tasksmanager.models import supervisor, developer # view create_developer def page(request): error = false # if form has posted if request.post: if 'name' in request.post: name = request.post.get('name', '') else: error=true if 'login' in request.post: login = request.post.get('login', '') else: error=true if 'password' in request.post: password = request.post.get('password', '') else: error=true if 'supervisor' in request.post: supervisor_id = request.post.get('supervisor', '') else: error=true if not error: supervisor = supervisor.objects.get(id = supervisor_id) new_dev = developer(name=name, login=login, password=password,supervisor=supervisor) new_dev.save() return httpresponse("developer added") else: return httpresponse("an error occured") else: supervisors_list = supervisor.objects.all() return render(request, 'en/public/create_developer.html', {'supervisors_list' : supervisors_list})
Comments
Post a Comment