Django Admin - 更改字段模型并自动更新另一个模型

Django Admin - Change field model and automatically update another model

嗯,我有一个 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")

你可以用 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 管理员,否则您必须自己调用清理方法。