Django: получить данные поля модели из данных поля модели

У меня есть что-то вроде этого в views.py.

    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
                )

Как мне сделать запрос или получить реферер вновь созданного реферера?

Чтобы понять, что я имею в виду, пожалуйста, проверьте изображение ниже.
введите описание изображения здесь

Я надеюсь, вы понимаете мой вопрос.

1 ответ

Решение

Я предполагаю, что в коде есть какая-то ошибка.

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():

            # 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
            )

Если вы намереваетесь найти реферала реферального пользователя текущего созданного пользователя, вы можете сделать что-то вроде этого.

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
        )

        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
            )

РЕДАКТИРОВАТЬ:

Путем минимального редактирования вашего кода:

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(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
            )
Другие вопросы по тегам