2016-11-21 7 views
0

Ich habe eine Liste von Personen auf der Gruppendetailseite. Ich versuche, eine Person aus der Gruppe zu entfernen und die Seite zurück zu dieser Gruppe umzuleiten.Mit Bezug auf verwandte Objektinstanz

from .models import Person, Group 

def person_remove(request, slug): 
    instance = get_object_or_404(Person, slug=slug) 
    instance.delete() 

    the_group = ? 
    group_slug = ? 
    return redirect('group_detail', slug=group_slug) 

Wie Sie sehen, ich bin vorbei ‚Slug‘ Parameter von Person-Objekt, aber ich versuche, zu dieser Gruppe Detailseite umgeleitet werden, die diese Person enthält.

bearbeiten

Ok es wie folgt aussieht:

Gruppenliste, basierend URL auf Slug:

url(r'^group/(?P<slug>[\w-]+)/$', GroupDetailView.as_view() , name='group_detail') 
  1. Gruppe A
  2. Gruppe B

Ok , geben Sie Gruppe A ein mit Gruppe-a-Schnecke. Auf dieser Seite haben wir: Liste der Personen, die zu dieser Gruppe gehören. Jeder Mensch hat seine eigene Slug:

url(r'^person/(?P<slug>[\w-]+)$', PersonDetailView.as_view() , name='person_detail') 
  • Person 1
  • Person 2
  • Person 3

I Instanzmethode Funktion in Person Modell erstellt:

def person_remove(self): 
    return reverse('person_delete', kwargs={ "slug": self.slug}) 

Was bezieht sich auf:

url(r'^person/(?P<slug>[\w-]+)/delete/$', person_delete , name='person_delete'), 

Und zuletzt bezieht es sich auf die Funktion schrieb ich am Anfang. Ich versuche eine Lösung zu finden, wie ich zurück zu dieser URL umleiten kann, wo ich auf "Person löschen" geklickt habe

Antwort

0

Was Sie erwähnt, entfernt Person-Instanz nicht aus einer Gruppe, löscht aber Person-Instanz.
Basierend auf Ihrem Modell benötigen Sie so etwas wie dies zu tun:

peter = get_object_or_404(Person, slug=slug) 
group = Group.objects.get(slug="Some group slug") 
peter.group_set.remove(group) 

docs