Django Admin-更改字段模型并自动更新其他模型

时间:2020-05-05 12:40:13

标签: django django-models django-admin

好吧,我有一个VagasUsuarios模型和一个Questionario模型。我希望当我通过django admin更新Questionario.pontuacao_questionario字段时,我的其他VagaUsuarios.pontuacao_vaga字段也将被更新。有办法吗?

感谢您的收听=)

我的模特:

class Questionario(models.Model):
    usuario                 = models.ForeignKey(Contas, on_delete=models.CASCADE)
    [...]
    pontuacao_questionario  = models.DecimalField(max_digits=5, decimal_places=2, null=True, blank=True,verbose_name="Pontuacao do Questionário")
class VagasUsuarios(models.Model):
    usuario                 = models.ForeignKey(Contas, on_delete=models.CASCADE)
    [...]
    pontuacao_vaga          = models.DecimalField(max_digits=5, decimal_places=2, verbose_name="Pontuacao da Vaga")

1 个答案:

答案 0 :(得分:3)

您可以使用signals进行此操作。

示例:

from django.db.models.signals import post_save
from django.dispatch import receiver
from myapp.models import Questionario, VagasUsuarios


@receiver(post_save, sender=Questionario)
def my_handler(sender, instance, **kwargs):
    obj = VagasUsuarios.objects.get(...)
    obj.pontuacao_vaga = instance.pontuacao_questionario
    obj.save()

另一种方法是覆盖模型的save()(或更确切地说,clean())方法,并在对其进行更新以获取要更新的所有相关VagasUsuarios对象时更新它们

关于clean()的注释:除非使用Django管理员,否则您必须自己调用清除方法。