Я новичок в Django, и я пробовал это в течение нескольких недель, но не смог найти способ решить эту проблему.AbstractUser Django полный пример
Я хочу хранить дополнительную информацию, такую как номер мобильного телефона пользователя, название банка, банковский счет. И хотите сохранить номер мобильного телефона, пока пользователь регистрируется, и хочет, чтобы пользователь входил в систему с помощью (номер мобильного телефона и пароль) или (адрес электронной почты и пароль).
Это моя UserProfile модель
from django.db import models
from django.contrib.auth.models import User
from django.contrib.auth.models import AbstractUser
# Create your models here.
class UserProfile(AbstractUser):
user_mobile = models.IntegerField(max_length=10, null=True)
user_bank_name=models.CharField(max_length=100,null=True)
user_bank_account_number=models.CharField(max_length=50, null=True)
user_bank_ifsc_code = models.CharField(max_length=30,null=True)
user_byt_balance = models.IntegerField(max_length=20, null=True)
И это мой forms.py
from django import forms
from django.contrib.auth.models import User # fill in custom user info then save it
from django.contrib.auth.forms import UserCreationForm
from models import UserProfile
from django.contrib.auth import get_user_model
class MyRegistrationForm(UserCreationForm):
email = forms.EmailField(required = True)
mobile = forms.IntegerField(required=True)
class Meta:
model = UserProfile
fields = ('username', 'email', 'password1', 'password2','mobile')
def save(self,commit = False):
user = super(MyRegistrationForm, self).save(commit = False)
user.email = self.cleaned_data['email']
user.user_mobile = self.cleaned_data['mobile']
user.set_password(self.cleaned_data["password1"])
user_default = User.objects.create_user(self.cleaned_data['username'],
self.cleaned_data['email'],
self.cleaned_data['password1'])
user_default.save()
if commit:
user.save()
return user
В моей settings.py я включил
AUTH_USER_MODEL = "registration.UserProfile"
admin.py моего Приложение:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from models import UserProfile
class UserProfileInline(admin.StackedInline):
model = UserProfile
can_delete = False
verbose_name_plural = 'userprofile'
class UserProfileAdmin(UserAdmin):
inlines = (UserProfileInline,)
admin.site.register(UserProfile, UserProfileAdmin)
При добавлении пользователя от администратора Я получаю эту ошибку
Exception at /admin/registration/userprofile/1/
<class 'registration.models.UserProfile'> has no ForeignKey to <class 'registration.models.UserProfile'>
Может кто-нибудь помочь мне с этим или указать на полный рабочий exapmle, я видел Джанго документации, но не нашли каких-либо успехов. Или если есть другой способ сделать это.
Заранее спасибо
Edit 1:
При регистрации из регистрационной формы я также получаю эту ошибку
DatabaseError at /register
(1146, "Table 'django_auth_db.auth_user' doesn't exist")
Можете ли вы предоставить ссылку, где я могу увидеть полную реализацию Django AbstractUser с регистрационной формой и представлениями. Я ударил здесь с 2 недель не смог найти выход. – vaibhav1312
Следуйте за этим: [link] (https://wsvincent.com/django-custom-user-model-tutorial/) –