3

DjangoでUserを拡張しようとしています。この新しいUserは、組み込みのUserより多くの属性を持つ必要があり、そのうちのいくつかは登録時に必要になります。さらに、私はAdminにこの新しいタイプのユーザーを見たいと思います。私は公式のチュートリアルに続き、this youtube videoだが、errorがある。Django - AttributeError: 'UserProfile'オブジェクトに 'urls'属性がありません。

私はDjangoで新しく、どこに問題があるのか​​わかりません。何が間違っているか知っていますか?

EDIT:サーバーを停止しようとしましたが、makemigrations - 同じエラーが発生しました。

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:あなたは、ユーザーのための管理者としてのUserProfile モデルを登録しているadmin.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 

答えて

3

。私はあなたがModelAdminのを登録するためのもの疑う:

admin.site.register(User,UserAdmin) 

(あなたのUserProfileモデルでそれらを複製した理由私は知らない、デフォルトのユーザーが既にFIRST_NAME、LAST_NAMEおよび電子メールを含むことにかかわらず、注意してください。)

0

私は同じ問題を抱えていました。私はadmin.pyファイルに2つのモデルを個別に登録することで修正しました。すなわち、

admin.site.register(User) 
admin.site.register(UserAdmin) 
関連する問題