not very nice, and probably not pythonic (still learning) but now I added 
another two for loops to find old references and delete them:
    if action == "post_add":
        if isinstance(instance, Database):
            # then update pairs
            for a in instance.audioData():
                for q in instance.questions.all():
                    pair = AudioQuestionPair.objects.get_or_create(audioData
=a, question=q, database=instance)
                    for choice in q.get_choices():
                        answer = Answer.objects.get_or_create(body=choice, 
audioQuestionPair=pair[0])
        # check for removed questions and delete pairs
        pairs = AudioQuestionPair.objects.filter(database=instance)
        toDelete = []
        for pair in pairs:
            if pair.question not in instance.questions.all():
                toDelete.append(pair)
        for item in toDelete:
            item.delete()



On Friday, January 30, 2015 at 9:44:29 PM UTC+1, Tobias Dacoir wrote:
>
> I have a many-to-many relationship which the Admin can change using the 
> Admin Site. I use a ModelAdmin.filter_horizontal, but even with the default 
> widget it's the same.
>
> I registered a receiver when m2m_changed, however it always only calls: 
> pre_clear, post_clear, pre_add, post_add, in that order. 
>
> Now for post_add I have code to execute, to create new objects in the 
> database, however when a value is removed from this many-to-many field, I 
> need to delete some objects. Since pre_remove is never called, I can't tell 
> which value was removed and I'm unable to find out which objects to delete.
>
> Is there a way to modify the Admin page to actually call remove / add on 
> the Model? Or I need another way to find out which value was removed.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/83eb139a-3732-4986-ad8a-12e36e9c8c1c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to