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
)