2016-04-19 14 views
0

Ich habe so etwas in views.py.Django: Holen Sie sich Modellfelddaten aus einem Modell Feld Daten

if form.is_valid(): 

     ref_user = User.objects.get(
     username=form.cleaned_data['referrer']) 

     if User.objects.filter(username=ref_user).exists(): 

      user = User.objects.create_user(
      username=form.cleaned_data['username'] 
      ) 

      direct = DirectReferral.objects.create(
       name = user, 
       referrer = ref_user # New created referrer 
      ) 

      if DirectReferral.objects.filter(referrer=ref_user).exists(): 

       # Get the referrer of the newly created referrer in DirectReferral database 

       indirect = IndirectReferral.objects.create(
        name = user, 
        referrer = # This should be the referrer of the newly created referrer 
       ) 

Wie kann ich eine Abfrage oder erhalten die Referrer des neu Referrer erstellt?

Um weiter zu verstehen, was ich meine, überprüfen Sie bitte Bild unten.
enter image description here

Ich hoffe, Sie verstehen meine Frage.

+0

Genauso wie du es aus deiner Sicht etwa 5 Zeilen über deinem Kommentar machst? – Sayse

Antwort

1

Ich denke, es gibt einen Fehler im Code.

wenn form.is_valid():

ref_user = User.objects.get(
    username=form.cleaned_data['referrer']) 

    if User.objects.filter(username=ref_user).exists(): 

     user = User.objects.create_user(
     username=form.cleaned_data['username'] 
     ) 

     direct = DirectReferral.objects.create(
      name = user, 
      referrer = ref_user # New created referrer 
     ) 

     if DirectReferral.objects.filter(referrer=ref_user).exists(): 

      # Here you are checking for something you just created. 
      # I guess this should be 
      # DirectReferral.objects.filter(name=ref_user).exists() 

      # Get the referrer of the newly created referrer in DirectReferral database 

      indirect = IndirectReferral.objects.create(
       name = user, 
       referrer = # This should be the referrer of the newly created referrer 
      ) 

Wenn Sie die Referrer der Befassung Benutzer des aktuell erstellten Benutzer finden möchten, Sie so etwas tun könnte.

wenn form.is_valid():

ref_user = User.objects.get(
    username=form.cleaned_data['referrer']) 

    if User.objects.filter(username=ref_user).exists(): 

     user = User.objects.create_user(
     username=form.cleaned_data['username'] 
     ) 

     direct = DirectReferral.objects.create(
      name = user, 
      referrer = ref_user # New created referrer 
     ) 

     try: 
      referral_of_ref_user = DirectReferral.objects.get(name=ref_user).referrer 
     except DirectReferral.DoesNotExist: 
      # Do what needs to be done if direct referral not exist. 
      print "No referrer" 
      # Get the referrer of the newly created referrer in DirectReferral database 
     else: 
      indirect = IndirectReferral.objects.create(
       name = user, 
       referrer = referral_of_ref_user 
      ) 

EDIT:

durch minimale Änderungen an Ihrem Code:

wenn form.is_valid():

ref_user = User.objects.get(
    username=form.cleaned_data['referrer']) 

    if User.objects.filter(username=ref_user).exists(): 

     user = User.objects.create_user(
     username=form.cleaned_data['username'] 
     ) 

     direct = DirectReferral.objects.create(
      name = user, 
      referrer = ref_user # New created referrer 
     ) 

     if DirectReferral.objects.filter(name=ref_user).exists(): 

      # Get the referrer of the newly created referrer in DirectReferral database 

      indirect = IndirectReferral.objects.create(
       name = user, 
       referrer = DirectReferral.objects.filter(name=ref_user)[0].referrer 
      ) 
+0

Danke! Es funktionierte. Ich wusste nicht, dass ich etwas wie "DirectReferral.objects.get (name = ref_user) .referrer" machen könnte. Haben Sie eine Dokumentation für diese Art von Abfrage? –

+0

Dieser Code ist nur eine übliche Abfrage. Es besteht die Möglichkeit einer weiteren Ausnahme, wenn der Name nicht eindeutig für 'DirectReferral' ist. Sie müssen auch die 'DirectReferral.MultipleObjectsReturned' Ausnahme abfangen. –

Verwandte Themen