Расширяет Django модель пользователя с моей моделью пользователя - PullRequest
1 голос
/ 18 января 2020

Уже видел некоторые документы и прочитал некоторые посты по этому вопросу, но я не могу понять, может быть, кто-то может мне помочь. Я хочу расширить Django модель пользователя с моей моделью "Пользователь".

Это пользователь моей модели:

from django.db import models
from django.contrib.auth.models import User as UserDJANGO
from django.db.models.signals import post_save
from django.dispatch import receiver

class User(models.Model):
    user_django = models.OneToOneField(UserDJANGO, on_delete=models.CASCADE)
    user_animals = models.ManyToManyField(Animal, blank=True)

    def __str__(self):
        return self.user_django.email

мой вид регистрации:

def signup(request):
    auth_logout(request)
    form = UserCreationForm(request.POST)
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password1')
            user = authenticate(username=username, password=password)
            auth_login(request, user)
            return redirect("home")
    return render(request, 'signup.html', {'form': form})

и моя форма в шаблоне:

<form method="post" class="form-signin">
    {% csrf_token %}
    <img class="mb-4" src="{% static 'images/logo_transparent.png' %}" alt="" width="300" height="300">
    <h1 class="h3 mb-3 font-weight-normal text-white">Registar-se</h1>

    <label for="id_username" class="sr-only">Endereço de Email</label>
    <input type="email" name="username" maxlength="150" autocapitalize="none" autocomplete="username"
           autofocus="" required="" id="id_username" class="form-control" placeholder="Endereço de Email">

    <label for="id_password1" class="sr-only">Password</label>
    <input type="password" name="password1" autocomplete="new-password" required="" id="id_password1"
           class="form-control" placeholder="Password">

    <label for="id_password2" class="sr-only">Password</label>
    <input type="password" name="password2" autocomplete="new-password" required="" id="id_password2"
           class="form-control" placeholder="Confirme a Password">

    <p class="mb-3 font-weight-normal text-white">Já possui conta? <a class="text-white" href="/login">Inicie sessão</a>
    </p>
    <button class="btn btn-lg btn-primary btn-block" type="submit">Registar</button>
    <!--<p class="mt-5 mb-3 text-white">&copy; 2017-2019</p>-->
</form>

Как я могу, когда я создаю пользовательскую ссылку на два? (Прочтите, что-то про сигналы, но не поняли)

1 Ответ

1 голос
/ 18 января 2020

Вам не нужны сигналы, вы можете просто создать один из них:

from app.models import User as <b>MyUser</b>

def signup(request):
    auth_logout(request)
    form = UserCreationForm(request.POST)
    if request.method == 'POST':
        if form.is_valid():
            user = form.save()
            <b>MyUser.objects.create(user_django=user)</b>
            auth_login(request, user)
            return redirect("home")
    return render(request, 'signup.html', {'form': form})

Однако я бы посоветовал не называть вашу модель User, а, например, Profile, поскольку два класса с одно и то же имя может создать большую путаницу.

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