3

Ich versuche User in Django zu erweitern. Diese neue User sollte mehr Attribute als die integrierte User haben und einige von ihnen sollten während der Registrierung benötigt werden. Darüber hinaus möchte ich diesen neuen Benutzertyp in Admin sehen. Ich habe das offizielle Tutorial und this Youtube Video verfolgt, aber es gibt eine error.Django - AttributeError: 'UserProfile' Objekt hat kein Attribut 'URLs'

Ich bin neu in Django, so kann ich nicht herausfinden, wo das Problem sein könnte. Weißt du was falsch ist?

EDIT: Ich habe versucht, Server zu stoppen und makemigrations - der gleiche Fehler aufgetreten.

CMD:

File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\ 
lib\site-packages\django\core\urlresolvers.py", line 417, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\ 
lib\site-packages\django\utils\functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\ 
lib\site-packages\django\core\urlresolvers.py", line 410, in urlconf_module 
    return import_module(self.urlconf_name) 
    File "c:\python27\Lib\importlib\__init__.py", line 37, in import_module 
    __import__(name) 
    File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\Solut 
ionsForLanguagesProject\urls.py", line 22, in <module> 
    url(r'^admin/', admin.site.urls), 
    File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\ 
lib\site-packages\django\contrib\admin\sites.py", line 303, in urls 
    return self.get_urls(), 'admin', self.name 
    File "C:\Users\Milano\PycharmProjects\FutileStudio\SolutionsForLanguages\venv\ 
lib\site-packages\django\contrib\admin\sites.py", line 287, in get_urls 
    url(r'^%s/%s/' % (model._meta.app_label, model._meta.model_name), include(mo 
del_admin.urls)), 
AttributeError: 'UserProfile' object has no attribute 'urls' 

MODELS.PY:

... 
from django.db.models.signals import post_save 
... 
class UserProfile(models.Model): 
    user = models.OneToOneField(User,on_delete=models.CASCADE) 

    first_name = models.CharField(max_length=40) 
    surname = models.CharField(max_length=40) 
    email = models.EmailField() 
    telephone = models.CharField(max_length=40) 

    def __unicode__(self): 
     return '{} {}'.format(self.first_name,self.surname) 

def create_profile_user_callback(sender,instance, **kwargs): 
    profile, new = UserProfile.objects.get_or_create(user=instance) 
post_save.connect(create_profile_user_callback, User) 

ADMIN.PY:

from django.contrib import admin 
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin 
from models import * 
from .models import UserProfile 

admin.site.register(AdminContact) 

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 
    can_delete = False 
    verbose_name_plural = 'User_Profile' 

class UserAdmin(BaseUserAdmin): 
    inlines = (UserProfileInline,) 

admin.site.unregister(User) 
admin.site.register(User,UserProfile) 

URLS.PY:

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^about', TemplateView.as_view(template_name='static/about-us.html')), 
    url(r'^terms-and-conditions', TemplateView.as_view(template_name='static/terms-and-conditions.html')), 
    url(r'^faq', TemplateView.as_view(template_name='static/faq.html')), 
    url(r'^$', views.index), 
    url(r'^contact-us', views.contact_us), 
] 

registration_patterns = [ 
    url(r'register', views.register), 
    url(r'register_success', views.register_success), 
] 

urlpatterns += registration_patterns 

Antwort

3

In admin.py Sie registrieren die Userprofile Modell als Admin für Benutzer; Ich vermute, dass Sie die Modeladmin registrieren gemeint:

admin.site.register(User,UserAdmin) 

(Beachten Sie aber, dass die Standard-Benutzer bereits enthält first_name, last_name und E-Mail, so dass ich weiß nicht, warum Sie sie in Ihrem Userprofile Modell dupliziert haben.)

0

Ich hatte das gleiche Problem. Ich habe es behoben, indem ich die beiden Modelle getrennt in der Datei admin.py registriert habe, d. H.

Verwandte Themen