Ir para conteúdo
Douglas42

Formulário de avaliação em Django.

Recommended Posts

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:

 

models.py:

 

from django.db import models
from jsonfield import JSONField
from site_.settings import MEDIA_ROOT

class Criterio(models.Model):
	label = models.CharField(max_length=100)

	def  __str__(self):
		return self.label

class Candidato(models.Model):
	name = models.CharField(max_length=100)
	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)

	def  __str__(self):
		return self.name

class Aval(models.Model):
	criterio = models.ManyToManyField(Criterio)
	nota = models.IntegerField()

	def  __str__(self):
		return self


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)

	def  __str__(self):
		return self


views.py

from django.shortcuts import render, get_object_or_404
from .models import Candidato, Criterio
from django import forms
from .forms import CandForm
from .forms import AvalForm
from django.shortcuts import redirect

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):
    if request.method == "POST":
        form = CandForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.save()
            return redirect('candidato_detalhe', pk=post.pk)
    else:
        form = CandForm()
    return render(request, 'app/cadastro.html', {'form': form})

 

forms.py

from .models import Candidato, Avaliacaofrom django import forms

class CandForm(forms.ModelForm):
    class Meta:
        model = Candidato
        fields = ('name', 'e_mail', 'github', 'linkedin', 'Ensino_superior','cover_letter')

class AvalForm(forms.ModelForm):
    class Meta:
        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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora


  • Conteúdo Similar

    • 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.
       


       
       
       
       
    • Por gust.php
      Senhores, boa noite.
       
      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
      nome
      email
       
      Agora no Django rest vamos criar as models, views e serializers para ler essa informações e disponibilizar ....
       
      Agradeço ....
    • Por brunocechet
      Estou trabalhando com Python3 e tentando reconhecer essas imagens, mas sem resultados satisfeitos ainda.
       
      Eu tentei pytesseract e a Google Vision API seguindo este tutorial.
       
      Eu não sei o que eu poderia fazer para obter melhores resultados
       
      Alguém poderia tentar me ajudar?
       
      Obrigado antecipadamente
    • Por gabrielfalieri
      Bom dia.

      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.

      Por exemplo.
      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?

       
    • Por Victor Penna
      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?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: