Обновление полей при обратном M2M-отношении

Наличие двух моделей:

class Publication(model.Models):
    title = models.CharField(max_lenght=30)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)


class Article(model.Models):
    headline = models.CharField(max_length=100)
    publications = models.ManyToManyField(Publication, related_name='articles') 

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

Я хочу, чтобы, когда я добавляю Publication к Article, поле updated_at в Publication также обновлялось:

a1 = Article.objects.create(name='Article 1')
p1 = Publication.objects.create(name='Publication 1')

a1.publications.add(p1)
print(a1.updated_at)
# Will print the timestamp when I added p1 to a1.

print(p1.updated_at)
# Will print the timestamp when I **created** p1. I want to print the time when it was added to a1.

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

Вернуться на верх