Django сигналов для двух типов пользователей - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь создать приложение, которое будет иметь два разных типа пользователей. В настоящее время у меня есть один тип пользователей под названием - Профили арендаторов. Я пытаюсь добавить в тип профиля Landlord также. Оба профиля получены из встроенных в Django auth_users. Я взял поле last_name из auth_users в значение True или False, и я пытаюсь построить профили арендодателя / арендатора на основе этого условия. Я пытался изменить файл signal.py, но пока мне не повезло.

С кодом, прикрепленным ниже, он позволяет вам зарегистрироваться, но создает учетную запись только для auth_users. Если я использую закомментированный код в signal.py, он создаст профиль арендатора.

signal.py

from django.db.models.signals import post_save
from django.contrib.auth.models import User
from django.dispatch import receiver
from .models import Tenant_Profile, Landlord_Profile


# This function aims to create a profile everytime a user registers
@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
     #if created:
         #Tenant_Profile.objects.create(tenant=instance)
     if created and User.last_name == False:
            Tenant_Profile.objects.create(tenant=instance)
     elif created and User.last_name == True:
             Landlord_Profile.objects.create(landlord=instance)



# kwargs just accepts any additional keyword arguments on the end of the function
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    #instance.tenant_profile.save()
    if User.last_name == False:
        instance.tenant_profile.save()
    elif User.last_name == True:
        instance.landlord_profile.save()

views.py

def register(request):
    if request.method == 'POST':
        form = UserRegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            last_name = form.cleaned_data.get('last_name')
            #print(type(username))
            #print(type(last_name))
            messages.success(request, f'Your account has been created! You are now able to log in')
            return redirect('login')
    else:
        form = UserRegistrationForm()
    return render(request, 'users/register.html', {'form': form}) 

1 Ответ

1 голос
/ 06 апреля 2020

Как Виллен Ван Онсем справедливо сказал, что вам нужно следовать тому, что он говорит, и просто ответить на ваш вопрос

Вы должны использовать instance.last_name вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...