Entendendo o Aggregate e o Annotate do Django

Поділитися
Вставка
  • Опубліковано 22 гру 2024

КОМЕНТАРІ •

  • @luanpoletti
    @luanpoletti Рік тому +1

    Surreal meu velho, meus parabéns. Didática incrivel.🤩🤩🤩🤩

  • @jonathacarneiro
    @jonathacarneiro 3 роки тому +9

    Já chego deixando o like, conteúdo assim de qualidade é raríssimo! parabéns!

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  3 роки тому

      É disso que eu gosto, Jonatha.
      Sempre presente e dando moral aqui no canal.
      Grande abraço.

  • @greensinais_bots
    @greensinais_bots 3 роки тому +2

    Chegando dando vuadora no like!!

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  3 роки тому

      Aaaaaaiii sim hein.
      Eu gosto é disso.
      Qualquer dia to querendo fazer uma aula ao vivo só pra poder trocar ideia com a galera que dá moral no canal.
      Abraço.

  • @vivianhen
    @vivianhen Рік тому +1

    Sua didática é muito boa! Parabéns

  • @viniciushemura4747
    @viniciushemura4747 3 роки тому +2

    Boa noite, seus vídeos estão salvando meu trabalho da faculdade, muito obrigado!!!

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  3 роки тому

      Que maravilha, Vinicius.
      Bom demais.
      Boa sorte ai no seu projeto.
      Precisando de alguma coisa, só falar.
      Abraço.

    • @viniciushemura4747
      @viniciushemura4747 3 роки тому +1

      @@SamuelGoncalvesPython Bom dia, obrigado.
      no meu projeto tenho 3 tabelas estoque que mostra a quantidade de cada produto, estoque-entrada e uma estoque-saída e não estou conseguindo fazer a o valor de estoque de cada produto ser a soma das entradas menos a soma das saídas .
      se puder me dar orientação do que fazer.
      muito obrigado mesmo!

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  3 роки тому

      @@viniciushemura4747 mas como vc está tentando fazer?
      Na hora que a pessoa salva?
      - Faça um filtro só com um determinado produto na query.
      - Aplique o aggregate sum do campo que vc quer.
      - Armazene isso numa variável.
      Vc vai fazer o mesmo para as duas tabelas.
      Depois faz a subtração.
      Tenta ai nessa linha e me diga se foi.
      Qq coisa manda ai novamente.

    • @viniciushemura4747
      @viniciushemura4747 3 роки тому +1

      ​@@SamuelGoncalvesPython Boa tarde, estou a tentando a alguns dias e não estou conseguindo progredir, consigo consulta e fazer a soma mas a variável de ele cria da um resultado que não consigo salvar, no banco.
      eu tenho 3 tabelas, uma com o valor da quantidade atual, uma para salvar os histórico de entrada de produtos e uma que salva o histórico de saída:
      Estava fazendo assim:
      def estoque_entrada(request):
      template_name = 'entrada.html'
      objects = Estoque.objects.filter()
      paginator = Paginator(objects, 15)
      page_number = request.GET.get('page')
      page_obj = paginator.get_page(page_number)
      produtos = Produto.objects.all()
      cont = 0
      List = (Estoque.objects.annotate(qtd=Cast('entrada', IntegerField()))
      .values('produto', 'qtd')
      .order_by(Coalesce('produto', 'qtd').asc())
      )
      #print(List)
      for prod in produtos:
      cont = List.filter(produto=prod.id).values('produto').annotate(Sum('qtd'))
      print(cont)
      return render(request, template_name, {'page_obj': page_obj, 'List': List})
      -----------------------------------------------------------------------------------------------------------------
      Depois mudei para essa forma: para tentar salvar nas duas tabelas
      def estoque_entrada(request):
      if request.method == 'GET':
      form = Estoqueform()
      form2 = ProdutoForm()
      context = {
      'form': form, 'form2': form2,
      }
      return render(request, 'estoque/estoque_form.html', context)
      else:
      form = Estoqueform(request.POST)
      produtos = Produto.objects.all()
      for prod in produtos:
      form2 = Estoque.objects.filter(produto_id__exact=prod.id).annotate(Sum('entrada'))
      print(form2)
      # if form.is_valid and form2.is_valid():
      # estoque = form.save()
      # form = Estoqueform()
      # produdo = form2.save()
      # form2 = ProdutoForm()
      context = {
      'form': form, 'form2': form2,
      }
      return render(request, 'estoque/estoque_form.html', context)
      -------------------------------------------------------------------------------------------------------------------------------------------
      mas nem uma das duas formas esta perto do resultado que preciso.
      poderia me ajudar ?
      Obrigado pela atenção e ajuda até o momento!

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  3 роки тому

      @@viniciushemura4747 Primeira dica que eu te dou, para a maioria das coisas que você quiser fazer, divida o "problema" em "probleminhas".
      Não existe bala de prata.
      Por exemplo, se seu problema é "Salvar uma soma no banco".
      Então, seu primeiro "probleminha" é "Pegar a soma".
      Depois que vc fizer isso, vc vai se preocupar com o segundo probleminha: "Como atualizar um registro no banco".
      Pra ficar mais fácil, vai lá no github e cria um arquivo gist e compartilha comigo aqui.
      Pois assim eu posso ver o código editado e também te ajudar com alterações.

  • @luizfilipedossantos7477
    @luizfilipedossantos7477 Рік тому +1

    Excelente Samuel! Novamente ajudou muito!

  • @diegogoncalves9246
    @diegogoncalves9246 2 роки тому +1

    Explicou muito bem, parabéns.

  • @rafaelzottesso
    @rafaelzottesso Рік тому +1

    Valeu pelo vídeo. Muito bem explicado e exemplificado.

  • @eduardolucas391
    @eduardolucas391 Рік тому +1

    Parabéns pelo conteúdo.

  • @mauricioanselmo379
    @mauricioanselmo379 Рік тому +1

    Excelente, Samuel! O conteúdo que você disponibiliza sempre me ajudou imensamente na resolução de meus problemas. Parabéns e muito obrigado!

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  Рік тому

      Que maravilha, Mauricio. Fico feliz em saber.
      Sucesso ai nos seus projetos.
      Grande abraço.

  • @VladimirSerra
    @VladimirSerra 3 роки тому

    Muito legal, espero que o canal tenha continuidade

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  3 роки тому

      Muito obrigado, Vladimir.
      Inclusive, você pode sugerir temas para os próximos vídeos.
      Abraço.

  • @aylton_21
    @aylton_21 Рік тому +1

    muito com seus videos

  • @rafascatena1
    @rafascatena1 Рік тому +1

    Caramba! Muto bom!!

  • @elsofernandes
    @elsofernandes 2 роки тому +1

    muito bom

  • @leonardocavachini1860
    @leonardocavachini1860 3 роки тому +1

    boa aula.

  • @noceunaotempao
    @noceunaotempao 3 роки тому

    Obrigado, não conhecia esses comandos e gostei muito.

  • @rafaelfidalgo8938
    @rafaelfidalgo8938 3 роки тому +1

    Muito bom o conteúdo do vídeo. Aliás o canal tem várias outras excelentes aulas para quem busca aprender Django pelo UA-cam. Obrigado aí Samuel!

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  3 роки тому +1

      Eu que agradeço o feedback maravilhoso, camarada.
      Um grande abraço e toda sorte nos seus projetos ai.

  • @ricardofelixmonteironeto9624
    @ricardofelixmonteironeto9624 11 місяців тому +1

    obrigado, me ajudou muito!

  • @zerielribeiro5787
    @zerielribeiro5787 3 роки тому

    Aula muito útil 👏

  • @nonatosales4772
    @nonatosales4772 3 роки тому

    Top. Muito esse video

  • @leonardofurtado7488
    @leonardofurtado7488 3 роки тому

    Excelente video

  • @gabrielsantos-mz3dr
    @gabrielsantos-mz3dr 3 роки тому

    muito boa a aula, parabéns

  • @tiagogrand
    @tiagogrand 3 роки тому

    O vídeo já valeu pela introdução. Muito bom, obrigado pelos conteúdos.

  • @albromoc
    @albromoc 3 роки тому

    Valeu Samuel, conteúdo informativo e transmitido com clareza, como de costume.

  • @rodolfocesarbispo4634
    @rodolfocesarbispo4634 3 роки тому

    Boa cara!

  • @nathanbahia6456
    @nathanbahia6456 3 роки тому

    Agora sim ficou bem claro! Obrigado pelo conteúdo!

  • @marlon4914
    @marlon4914 Рік тому +1

    Você é muito bom! Uma pergunta, você vai lendo as documentações e estudando ou foi aprendendo com o tempo e com suas próprias dúvidas?

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  Рік тому +1

      Muito obrigado, Marlon.
      No caso, é tudo isso ai e um pouco mais. rsrsrs
      Leitura de livros, experiências profissionais, minhas próprias dúvidas, dúvidas de pessoas que ajudo, documentação, experiência trocadas com pessoas que sabem coisas que não sei, e assim por diante.
      Mas o mais importante é: PRATICAR. Sempre que aprendo algo, tento já fazer e ver funcionando.
      Isso ajuda a lembrar bem.
      Grande abraço, camarada.

  • @HigorLP
    @HigorLP 3 роки тому

    Muito bom como sempre Samuel! Parabéns!

  • @PySaga
    @PySaga 3 роки тому

    Muito boa aula, assim como as outras. parabéns Samuel, você vai fazer muito sucesso.

  • @noobdaaviacao
    @noobdaaviacao 3 роки тому +1

    Obrigado pela explicação, me ajudou muito e ganhou mais um escrito. Queria saber como ser faz aggregate com Timefield, pesquisei mais nao achei uma resposta

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  3 роки тому

      Muito obrigado, Dalmo. Fico muito feliz com você aqui no canal.
      Me fala mais sobre o motivo de vc querer fazer isso, as vezes a gente consegue chegar em uma solução legal juntos.
      Mas me explique o problema que tem e onde quer chegar. E a parte técnica a gente vai descobrindo.

    • @noobdaaviacao
      @noobdaaviacao 3 роки тому +1

      @@SamuelGoncalvesPython Eu que agradeço, com seus vídeos eu to conseguindo tira muitas duvidas.
      Vou tenta explicar melhor a minha duvida.
      Tenho uma tabela com os seguinte dados
      ----------------------------
      name | horas |
      ---------------------------
      Bruno | 12:34 |
      Lana | 06:01 |
      Bruno | 09:00 |
      Luan | 10:05 |
      Bruno | 00:34 |
      Lana | 00:59 |
      ---------------------------
      no meu models.
      name = models.CharField(max_length=200, null=True, blank=True)
      user_time = models.TimeField(auto_now=False, auto_now_add=False, null=True)
      meu views.
      customer = Profile.objects.annotate(total_time=(Sum('pireps__user_time'))
      erro que aparece:
      You cannot use Sum, Avg, StdDev, and Variance aggregations on date/time fields in sqlite3 since date/time is saved as text.
      Queria somar a quantidade de horas de cada usuário.
      Pesquisei pela internet mas não achei a solução. Tentei muda para DurationField mais para o que eu quero não serve.
      Teria como me da um norte?

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  3 роки тому

      @@noobdaaviacao Bom demais.
      Cara, olhando para seu erro eu sugiro que vc faça um teste utilizando outro banco de dados que não seja o sqlite3.
      Tenta instalar e utilizar o postgres, por exemplo.
      Pois no erro está dizendo que ele não consegue somar por causa da forma que o sqlite3 salva o tipo "hora".
      Tenta ai e me fala se deu certo.
      Se não der, a gente tenta outra coisa.
      Abraço.

  • @andreymoretti8405
    @andreymoretti8405 2 роки тому +1

    Parabéns pelo vídeo Samuel, poderia me tirar uma dúvida como posso realizar no Django um campo chamado TOTAL com o resultado de subtotais de uma coluna.
    Desde já muito obrigado e parabéns pelo canal.

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  2 роки тому +1

      Muito obrigado, Andrey.
      Veja o vídeo de novo com calma. Sem ficar pulando que eu ensino isso ai.
      Mas para facilitar a sua vida, nessa parte eu faço com o AVG, vc vai fazer a mesma coisa substituindo pelo SUM.
      ua-cam.com/video/2vH3y53FsGI/v-deo.html
      Mas dá uma força ai. Assiste o vídeo completo que vale a pena.
      Abraço.

  • @lucasnigro4970
    @lucasnigro4970 2 роки тому +1

    Olá Samuel!
    Você altera o seu settings para utilizar esse python console?
    Quando tento importar um modelo aparece o seguinte erro para mim:
    from pessoa.models import Pessoas
    Traceback (most recent call last):
    File "C:\Users\Lucas Nigro\AppData\Local\Programs\Python\Python310\lib\code.py", line 90, in runcode
    exec(code, self.locals)
    File "", line 1, in
    File "C:\Program Files\JetBrains\PyCharm Community Edition 2022.1.3\plugins\python-ce\helpers\pydev\_pydev_bundle\pydev_import_hook.py", line 21, in do_import
    module = self._system_import(name, *args, **kwargs)
    File "C:\Users\Lucas Nigro\OneDrive - GIOLASER CLINICA DE ESTETICA\LUCAS\ESTUDO LUCAS\PycharmProjects\ProjetoErpEstetica\pessoa\models.py", line 21, in
    class Pessoas(models.Model):
    File "C:\Users\Lucas Nigro\.virtualenvs\ProjetoErpEstetica\lib\site-packages\django\db\models\base.py", line 127, in __new__
    app_config = apps.get_containing_app_config(module)
    File "C:\Users\Lucas Nigro\.virtualenvs\ProjetoErpEstetica\lib\site-packages\django\apps
    egistry.py", line 260, in get_containing_app_config
    self.check_apps_ready()
    File "C:\Users\Lucas Nigro\.virtualenvs\ProjetoErpEstetica\lib\site-packages\django\apps
    egistry.py", line 137, in check_apps_ready
    settings.INSTALLED_APPS
    File "C:\Users\Lucas Nigro\.virtualenvs\ProjetoErpEstetica\lib\site-packages\django\conf\__init__.py", line 87, in __getattr__
    self._setup(name)
    File "C:\Users\Lucas Nigro\.virtualenvs\ProjetoErpEstetica\lib\site-packages\django\conf\__init__.py", line 67, in _setup
    raise ImproperlyConfigured(
    django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
    Abs!

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  2 роки тому

      Se vc for no momento 9:18 do vídeo, vc vai ver meu terminal no "início".
      Note que tem quatro comandos que foram executados antes de eu começar.
      O meu executa sozinho pq eu customizei.
      Mas se vc quiser, pode, simplesmente, rodar esses quatro comandos e o seu também vai funcionar.
      A única observação é que no terceiro comando tem o caminho do settings do meu projeto, vc vai substituir pelo caminho do settings no seu projeto.

  • @fabioacarvalho
    @fabioacarvalho 2 роки тому +1

    No template Django eu acesso esse valor pelo nome da variável {{ preco_medio }} ? Ou tem outra forma?

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  2 роки тому

      Se vc passar uma lista de "objeto" onde tem o annotate "preco_medio", vc pegaria dentro de um "for" e seria:
      {% for objeto in objetos %}
      {{ objeto.preco_medio }}
      {% endfor %}

  • @ricardofelixmonteironeto9624
    @ricardofelixmonteironeto9624 11 місяців тому

    evitei usar pandas com seu video kkkk

    • @SamuelGoncalvesPython
      @SamuelGoncalvesPython  8 місяців тому

      Hahahahaha
      Muito boa essa.
      Mas realmente o ORM do django é muito bom. Ajuda demais da conta.
      Abraço.