Django'nun sinyallerine aşina değilim ve biraz yardım alabilirim.Django'nun kaydedilenleri değiştirmek için m2m_changed'ini kullanma Pre_add
Örnek kaydedilmeden önce pk_set'i nasıl değiştirebilirim? Sinyal arayana bir şey döndürmek zorunda mıyım (kwargs
gibi)? Yoksa instance
'u kendim mi kaydederim?
Basitleştirilmiş bir örnek olarak: pk=1
ile Kategori’nün tüm Videolarım kaydedildiklerinde eklendiğinden emin olmak istedim. Bunu m2m_changed
ile nasıl yaparım?
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)
sinyaller değerleri döndürmek için gerekli değildir. Ayrıca, örneği kaydetmeniz gerekmez. Sadece seçilen olaylara yanıt olarak çalıştırılacak kodu ekleyin. – mvillaress