AbstractUser Django полный пример

Я новичок в 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'>

Может кто-нибудь помочь мне с этим или указать на полный рабочий пример, Я видел документацию по Django, но мне не повезло. Или, если есть другой способ сделать это.

Заранее спасибо

Редактировать 1:

При регистрации из регистрационной формы я также получаю эту ошибку

DatabaseError at /register
(1146, "Table 'django_auth_db.auth_user' doesn't exist")
10
задан vaibhav1312 14 February 2014 в 12:35
поделиться