Как я могу использовать таблицу «user» на mysql вместо таблицы «auth_user», которая по умолчанию используется на сайте django? - PullRequest
0 голосов
/ 28 октября 2019

Как я могу использовать таблицу "user" в mysql вместо таблицы "auth_user", которая используется по умолчанию на сайте django?

def login_user(request):
if request.method == 'POST':
    form = AuthenticationForm(request=request, data=request.POST)
    if form.is_valid():
        user_id = form.cleaned_data.get('user_id')
        password = form.cleaned_data.get('password')
        user = authenticate(user_id=user_id, password=password)

        if user is not None:
            login(request, user)
            messages.info(request, f"You are now logged in as {user_id}")
            return redirect('/')
        else:
            messages.error(request, "Invalid username or password.")
    else:
        messages.error(request, "Invalid username or password.")
form = AuthenticationForm()
return render(request=request,
              template_name="login.html",
              context={"form": form})

код из views.py

код от models.py (пользователь)

class User(models.Model):
login_id = models.AutoField(primary_key=True)
user_id = models.CharField(max_length=50, blank=True, null=True)
employee_id = models.IntegerField()
password = models.CharField(max_length=45)
user_type = models.CharField(max_length=45)

class Meta:
    managed = False
    db_table = 'user'

код из models.py (auth_user)

class AuthUser(models.Model):
password = models.CharField(max_length=128)
last_login = models.DateTimeField(blank=True, null=True)
is_superuser = models.IntegerField()
username = models.CharField(unique=True, max_length=150)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=150)
email = models.CharField(max_length=254)
is_staff = models.IntegerField()
is_active = models.IntegerField()
date_joined = models.DateTimeField()

class Meta:
    managed = False
    db_table = 'auth_user'

1 Ответ

0 голосов
/ 28 октября 2019

Просто переопределите имя по умолчанию 'db_table' для пользовательской модели в ваших models.py:

from django.contrib.auth.models import AbstractUser

class MyUser(AbstractUser):

    class Meta:
        swappable = 'AUTH_USER_MODEL'
        db_table = 'user'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...