Django Отправка сигнала после обновления соответствующих полей - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть 2 модели


class Mapping(Model):
    title = models.CharField(max_length=22)


class Query(Model):
    field = models.CharField(max_length=22)
    type = models.CharField(max_length=10, choices=(('=', 'Equals', ('in', 'Contains')))
    value = models.CharField(max_length=256)
    mapping = models.ForeignKey(Mapping, null=True, blank=True, related_name='queries')

Таким образом, отображение может иметь несколько запросов.

Мне нужно выполнить какую-то операцию, чтобы сопоставить сотрудников (отдельная модель), которые сопоставляются с отображением после его создания, поэтому я попытался использовать сигналы

@receiver(post_save, sender=Mapping)
def do_something(instance, created, **kwargs):
    print("SIGNAL Received !!")
    print(instance.queries)  # Gives None

Проблема в том, что сигнал отправляется до того, как объекты Query созданы, и я получаю None при попытке доступа к instance.queries

Я не могу использовать m2m_changed, поскольку это не ManyToManyField.

Я также подумал об изменении отправителя сигнала на модель запроса вместо модели отображения, но это не сработает, поскольку мне нужно сопоставить сотрудников с отображением, только если они удовлетворяют всем запросам отображения, для которых мне нужно запустить задача на объекте сопоставления, а не на запросе.

Пожалуйста, предложите любые возможные решения.

...