2017-03-10 3 views
0

In einem Modell mit einer M2M-Beziehung. Gibt es eine Möglichkeit, die ID des Feldes dieser Beziehung in ein Signal zu bekommen?Erhalten ID von M2M-Instanz

Ich möchte in der Lage sein, die ID der Bar-Instanz zu erhalten, die verwendet wird. Irgendeine Idee?

Antwort

0

[UPDATE]:

from django.db.models.signals import m2m_changed 

def whatever(sender, instance, **kwargs): 
    print(kwargs['pk_set']) 

m2m_changed.connect(whatever, sender=Foo.bar.through) 

[OLD]:

instance.bar.values('id') oder instance.bar.values_list('id', flat=True)

+0

So kann ich die Liste mit allen Beziehungen erhalten werden, nicht derjenige gespeichert wird. – loar

0

Verwenden m2m_changed

@receiver(m2m_changed, sender=Foo) 
def whatever(sender, instance, action, pk_set, **kwargs): 
    if action == "pre_add": 
     print pk_set 

pk_set

Für die Aktionen pre_add, post_add, pre_remove und post_remove ist dies eine Gruppe von Primärschlüsselwerten, die der Relation hinzugefügt oder daraus entfernt wurden. Für die Aktionen pre_clear und post_clear ist dies None.

https://docs.djangoproject.com/en/1.10/ref/signals/#m2m-changed