Formulário de avaliação em Django. - Python - Fórum iMasters
Formulário de avaliação em Django.
Por Douglas42, Março 14 em Python
Douglas42 0
Boa tarde pessoal, sou novo no fórum e esse é meu primeiro tópico, curso análise e desenvolvimento de sistemas e estou fazendo um teste para uma vaga de eságio.
O teste consiste no seguinte: eu devo fazer uma aplicação web usando Python3/Django que seja um cadastro para vaga de emprego, a pessoa se registra, põe nome, endereço do Github, Linkedin, Currículo etc. Depois devo fazer com que os avaliadores (usuários admin) possam avaliar esses candidatos de acordo com critérios criados/escolhidos por eles, consegui fazer tudo ok, os models referentes a candidato e a critérios, fiz o formulário de inscrição do candidato salvando os dados e etc no banco de dados devidamente.
Porém estou a dias empacado no segundo formulário que seria o de avaliação do candidato, conforme as recomendações que me deram, eu devo fazer um model que relacione o candidato, o avaliador os critérios e suas notas, a página desse formulário deve exibir os critérios e ao seu lado um campo para receber a nota, por exemplo:
Experiencia: X
Eu fiz o model já, mas o que não faço a minima ideia de como fazer é vincular os critérios a uma nota, eu criei um atributo que seria o campo que recebe a nota e outro que recebe o critério, só que como eu faço para vincular o atributo que recebe o critério com o que recebe a nota, quero dizer, para que eu posso dizer ao banco de dados: Este critério x recebe essa nota, os atributos já estão criados, só não estão vinculados como deve ser.
aqui vai meus models/views/froms.py:
from site_.settings import MEDIA_ROOT
class Criterio(models.Model):
label = models.CharField(max_length=100)
class Candidato(models.Model):
e_mail = models.EmailField(max_length=100, default = '')
github = models.URLField(default = '')
linkedin = models.URLField(max_length=100, default = '')
cover_letter = models.TextField(default = '')
Ensino_superior = models.BooleanField(default = False)
med = models.IntegerField(default = 0)
#talvez tenha que alterrar essa linha
docfile = models.FileField(upload_to='/home/douglas/Documentos/Django/my-second-blog/site_/media', null=True, blank=True)
class Aval(models.Model):
criterio = models.ManyToManyField(Criterio)
nota = models.IntegerField()
class Avaliacao(models.Model):
candidato = models.ForeignKey(Candidato)
criterio = models.ForeignKey(Criterio)
nota = models.IntegerField(default = 0)
avaliador = models.ForeignKey('auth.User')
#aval = models.ForeignKey(Aval)
from .models import Candidato, Criterio
from .forms import CandForm
from .forms import AvalForm
def canditato_list(request):
candidatos = Candidato.objects.all()
return render(request, 'app/candidato_list.html', {'candidatos': candidatos})
def candidato_detalhe(request, pk):
candidato = get_object_or_404(Candidato, pk=pk)
return render(request, 'app/candidato_detalhe.html', {'candidato': candidato})
def avaliar(request):
criterios = Criterio.objects.all()
form2 = AvalForm()
return render(request, 'app/avaliacao.html', {'criterios': form2})
def cadastrar(request):
form = CandForm(request.POST)
return redirect('candidato_detalhe', pk=post.pk)
form = CandForm()
return render(request, 'app/cadastro.html', {'form': form})
from .models import Candidato, Avaliacaofrom django import forms
class CandForm(forms.ModelForm):
model = Candidato
fields = ('name', 'e_mail', 'github', 'linkedin', 'Ensino_superior','cover_letter')
class AvalForm(forms.ModelForm):
model = Avaliacao
Então é isso pessoal, eu preciso é vincular duas variáveis do mesmo modelo.
PS: eu quero e preciso muito desse emprego.
Obrigado de coração, qualquer dica mínima que seja é muito bem vinda.
Chamar umafunção Python dentro de uma view do Django
Por ericolvr
Pessoal, estou usando umafunção para ler um xml externo.
Esses dados do XML precisam chegar numa view do Django para eu gerar um novo XML.
Tenho os arquivoa e as funções:
arquivo: mini.py
def le_xml(request): dom1 = parse(urllib2.urlopen('https://www.w3schools.com/xml/cd_catalog.xml')) print dom1.toxml() - Vou substituir o print peloreturn arquivo views.py
from django.shortcuts import render from django.http import HttpResponse from mini import le_xml def uma_view(request): não sei se existe a possibilidade de usar o le_xml aqui nessa view, para poder renderiza-lo no template
Alguém pode me dar uma luz? De como posso passar a função le_xml para a view do Django,
e entao renderiza-la no meu template.
Tenho assistido vários vídeos de como criar uma API Rest usando Django Rest Framework e não parece ser difícil. Em todos os vídeos que assisto os exemplos são criados inserindo e mostrando dados cadastrados em um DB criado com o comando :
python manager.py migrate
Esse comando acima me parece ser utilizado para criar um modelo de admin do Django .... Certo ?
Quero criar uma API para ler dados de uma tabela que já esta criada em um sistema meu em produção.
Como registrar o meu banco de dados? como fazer ele ler a tabela que eu quero? .... Não quero nem que exista esse DB admin ...
Alguém recomenda algum video do tipo:
Criando um tabelinha Cliente
Agora no Django rest vamos criar as models, views e serializers para ler essa informações e disponibilizar ....
Por brunocechet
melhor forma para montar um form dinamico
Por gabrielfalieri
Eu estou tentando criar um form a partir de um resultado de um select.
Eu tenho um formulário, onde a partir de esse formulário, eu faço um select e nesse select, tenho que criar um formulário a partir dele.
Seleciona as informações e a partir do modulo e tipo de licenciamento ele gera a query.
Eu fiz um ajax, que envia esses dados selecionados para uma página php, onde essa página php, chama o crud para fazer o select. Uma vez feito, ele executa um select onde busca as informações. Nesse select se faz um print_r onde o ajax pega a informação salva e exibiria, gerando o form.
Então ficaria assim.
ajax que envia a requisição e imprimia os dados
var XMLHttp = generateXMLHttp(); XMLHttp.open("get", "classes/getData.php?tipoLicenciamento=" + tipoLicenciamento + "&modulo="+modulo+"&tipoComercializacao=" + tipoComercializacao, true); XMLHttp.onreadystatechange = function () { if (XMLHttp.readyState == 4){ if (XMLHttp.status == 200) { var data = XMLHttp.responseText.split(/(\d+)(?=(?:\d{2}\/\d{2}\/\d{4}\sa))/); data = XMLHttp.responseText.split("#"); if(XMLHttp.responseText == ""){ }else{ alert(data[1]); } XMLHttp.abort(); //var obj = {}; } else { result.innerHTML = "Um erro ocorreu: " + XMLHttp.statusText; } } };
php que pega a informação e manda para a classe
if(isset($_GET['tipoLicenciamento']) && isset($_GET['modulo']) && isset($_GET['tipoComercializacao'])){ $tipoLicenciamento = $_GET['tipoLicenciamento']; $modulo = $_GET['modulo']; if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ $PropostaComercial->getItens($tipoLicenciamento,$modulo); } else if(empty($result)){ $PropostaComercial->getItens($tipoLicenciamento,$modulo); } else{ $PropostaComercial->getItens($tipoLicenciamento,$modulo); } } php que executa a query e faz o retorno dos dados
$sql = "SELECT prt_produto_item.nome as nome_item, prt_produto_item.descricao as descricao_item, prt_produto_tipo_licenciamento.nome as nome_licenciamento,prt_produto_modulo.nome as nome_modulo FROM prt_produto_item_modulo_tipo JOIN prt_produto_item ON prt_produto_item_modulo_tipo._id_produto_item = prt_produto_item.id_produto_item JOIN prt_produto_tipo_licenciamento ON prt_produto_item_modulo_tipo._id_tipo_licenciamento = prt_produto_tipo_licenciamento.id_tipo_licenciamento JOIN prt_produto_modulo ON prt_produto_item_modulo_tipo._id_modulo = prt_produto_modulo.id_modulo WHERE _id_modulo = ".$modulo." AND _id_tipo_licenciamento = ".$tipoLicenciamento.";"; $stmt = DB::prepare($sql); $stmt->execute(); foreach ($stmt->fetchAll() as $item => $value){ $this->return = "#".utf8_encode($value->nome_item); $this->return .= "#".utf8_encode($value->descricao_item); $this->return .= "#".utf8_encode($value->nome_licenciamento); $this->return .= "#".utf8_encode($value->nome_modulo); print_r($this->return); } Absolutamente tudo está funcionando bem, certinho. Só que eu estou com certa dificuldade de pegar esse retorno e montar o form. Os dados não seriam fácil de ser manipulados.
Existem alguma forma mais fácil de se montar esse tipo de form?
Tem como usar Anaconda versão 3 e 2 ao mesmo tempo n linux?
Bom dia companheiros, gostaria de saber se temos como usar o anaconda 3 e 2 ao mesmo tempo no linux(ubuntu)? Tenho alguns projetos da faculdade que estamos trabalhando com analise de dados, porém ainda estou apanhando com "Ananconda". Já que precisamos portar os códigos da versão 2, para versão 3 ainda não consegui executar a versão 2, juntamente com a ferramenta ipython dela. Se alguém souber fico grato pela ajuda.
P.S: Todos os dois pacotes estão na mesma pasta, no diretório /home, porém não consigo executar a versão, só a versão 3 pelo terminal, ou outro aplicativo que uso os caminhos corretos.
No script do bashrc, o caminho está exportado para versão 3, teria algum problema para colocar a versão 2 lá também?