2017-10-25 3 views
0

Ich bin ziemlich neu zu Django und war es gut ging bis dahin.Versuchen, Benutzer in Django benutzerdefinierte Felder hinzufügen

Ich versuche Felder ‚Adresse‘ und ‚phone_number‘ zu Benutzern hinzufügen (benutzerdefinierte grundsätzlich erstellen), aber ich erhalte immer diesen Fehler so ...

File "C:\Users\will5\Desktop\City\city_info\forms.py", line 5, in <module> 
class UserForm(forms.ModelForm): 
File "C:\Users\will5\AppData\Local\Programs\Python\Python36-32\lib\site- 
packages\django\forms\models.py", line 257, in __new__ 
raise FieldError(message) 
django.core.exceptions.FieldError: Unknown field(s) (phone_number, address) 
specified for User 

diese Modelle

... 
from django.contrib.auth.models import AbstractUser 

class User(AbstractUser): 
    phone_number = models.IntegerField(default=0) 
    address = models.CharField(max_length=150) 
... 

das ist in meinen Formen

from django.contrib.auth.models import User 
from django import forms 

class UserForm(forms.ModelForm): 
    password = forms.CharField(widget=forms.PasswordInput) 

class Meta: 
    model = User 
    fields = ['username', 'email', 'password', 'address', 'phone_number'] 

ich habe auch gelesen, dass ich zu, um dieses Problem zu beheben haben Starten Sie mein Projekt neu, indem Sie den benutzerdefinierten Benutzer erstellen und migrieren, und ich möchte das nicht tun.

Antwort

1

Das Problem ist, dass Sie immer noch importieren, das Modell in Benutzer gebaut

Sie können das Problem beheben, indem

from django.contrib.auth.models import User 

mit

from django.contrib.auth import get_user_model 
User = get_user_model() 

ersetzt Dies setzt voraus, dass Sie AUTH_USER_MODEL = 'yourapp.User' gesetzt haben in deine Einstellungen

Wie Sie in den Dokumenten gelesen haben, ist es extrem schwierig, nach dem Start des Projekts zu einem benutzerdefinierten Benutzermodell zu wechseln. Es gibt keine einfache Lösung dafür. Wenn Sie Ihr Projekt nicht neu starten können, könnten Sie stattdessen ein Profile Modell mit einem OneToOneField auf dem Standard User stattdessen erstellen.

+0

Also um das Projekt neu zu starten nur die "Klasse Benutzer" zuerst und migrieren, und danke für die Hilfe übrigens –

Verwandte Themen