Использование m2m_changed Django для изменения сохраняемого pre_add

Я не очень знаком с сигналами Джанго и могу использовать некоторую помощь.

Как мне изменить pk_set перед сохранением экземпляра? Нужно ли что-то возвращать вызывающему сигналу (например, kwargs)? Или я сам сохраняю instance?

В качестве упрощенного примера: я хотел убедиться, что категория с pk=1 будет включена во все мои видео при их сохранении. Как бы я сделал это с m2m_changed?

class Video(models.Model):
    category = models.ManyToManyField('Category')

def video_category_changed(sender, **kwargs):
    action = kwargs.pop('action', None)
    pk_set = kwargs.pop('pk_set', None)
    instance = kwargs.pop('instance', None)

    if action == "pre_add":
        if 1 not in pk_set:
            pk_set.update( [ 1 ] )  # adding this to the set
            # do something else?
            # profit?

m2m_changed.connect( video_category_changed, sender=Video.category.through )
8
задан thornomad 21 October 2014 в 18:02
поделиться