Como usar o Signals com dois models

64 views
Skip to first unread message

Frederico da Silva Santos

unread,
Feb 4, 2014, 7:55:50 AM2/4/14
to django...@googlegroups.com
Galera,
tenho dois models: Produto e HistoricoPrecos

Em HistoricoPrecos tem um foreignkey de Produto.
Quero que ao inserir um novo Produto ou ao alterar o valor de um Produto seja gravado este novo valor em HistoricoPrecos.

Resumo dos models:

class Produto(models.Model):
    descricao = models.TextField()   
    preco = models.DecimalField()

class HistoricoPrecos(models.Model):
    produto = models.ForeignKey(Produto)
    preco = models.DecimalField(...)

Como eu poderia fazer isso usando Signals?

Ellison Leão

unread,
Feb 4, 2014, 8:00:24 AM2/4/14
to django...@googlegroups.com
Você pode usar a app django-simple-history pra isso. Acredito que resolva seu problema.



--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para django-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--

Frederico da Silva Santos

unread,
Feb 4, 2014, 12:47:05 PM2/4/14
to django...@googlegroups.com

Na verdade Ellison, eu não gostaria de usar uma app pronta para fazer isso. Sei que é algo bem simples e dá para fazer com Signals.

Paula Grangeiro

unread,
Feb 4, 2014, 1:40:42 PM2/4/14
to django...@googlegroups.com
Olá, Frederico.

Primeiramente, segue a documentação do Django sobre signals [1] [2]
Você pode usar o signal django.db.models.signals.post_save para executar a função que deseja. Esse signal é disparado depois que o objeto a que ele está conectado é salvo.

Ficaria mais ou menos assim:

from django.db.models.signals import post_save

def meu_metodo(sender, **kwargs):
    '''
      Código do que deve ser feito após salvar o produto
    '''


Em 4 de fevereiro de 2014 15:47, Frederico da Silva Santos <fredsilva...@gmail.com> escreveu:

Na verdade Ellison, eu não gostaria de usar uma app pronta para fazer isso. Sei que é algo bem simples e dá para fazer com Signals.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Django Brasil" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para django-brasi...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
"Você é aquilo que você produz."
Paula Grangeiro - www.paulagrangeiro.com.br
Reply all
Reply to author
Forward
0 new messages