Django Admin - Изменить модель поля и автоматически обновить другую модель - PullRequest
0 голосов
/ 05 мая 2020

Ну, у меня есть модель VagasUsuarios и модель Questionario. Я бы хотел, чтобы при обновлении поля Questionario.pontuacao_questionario через django admin обновилось и другое поле 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 Ответ

3 голосов
/ 05 мая 2020

Вы можете сделать это с помощью сигналов .

Пример:

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 админ.

...