나는 Django의 신호에 익숙하지 않아 도움이 될 수 있습니다.장고의 m2m_changed를 사용하여 저장 내용 수정하기 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)
신호에서 값을 반환 할 필요는 없습니다. 또한 인스턴스를 저장할 필요가 없습니다. 선택한 이벤트에 대한 응답으로 실행될 코드를 추가하기 만하면됩니다. – mvillaress