2016-04-19 4 views
0

views.pyのようなものがあります。Django:モデルフィールドデータからモデルフィールドデータを取得

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 
       ) 

どのように私は、クエリを作成したり、新しく作成された リファラのリファラを得るのですか?

さらに理解していただくために、下の画像をご確認ください。
enter image description here

私の質問を理解していただければ幸いです。

+0

あなたの意見の上にあなたのコメントの上に約5行同じようにそれを行うのと同じ方法ですか? – Sayse

答えて

1

私はコードに間違いがあると思います。

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 
      ) 

あなたが現在作成したユーザーの紹介ユーザーのリファラを発見する場合、あなたはこのような何かを行うことができます。

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:あなたのコードに最小限の編集によって

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

ありがとう!出来た。私は 'DirectReferral.objects.get(name = ref_user).referrer'のようなことをすることができるかどうか分かりませんでした。あなたはこの種の問い合わせのための文書を持っていますか? –

+0

このコードは単なる通常のクエリです。 名前が 'DirectReferral'に対して一意でない場合、別の例外が発生する可能性があります。あなたは 'DirectReferral.MultipleObjectsReturned'例外もキャッチする必要があります。 –

関連する問題