2016-02-06 4 views
1

Я искал вокруг, пытаясь понять это, я хочу добавить простые вещи в мою модель Profile, такую ​​как аватар, контактные данные и т. Д. Однако, следуя учебным пособиям, которые я нашел в Интернете, как это сделать, я только встречаюсь с ошибками.Как расширить модель пользователя в django 1.9?

Это то, что моя модель выглядит (гусеничный/models.py):

from django.db import models 
from django.core.exceptions import ValidationError 
from django.core.files.images import get_image_dimensions 
from django.contrib.auth.models import User 

... 

class Profile(models.Model): 

    def generate_user_folder_avatar(instance, filename): 
     return "uploads/users/%s/%s.png" % (instance.user, 'avatar') 

    user = models.OneToOneField(User) 

    avatar = models.ImageField(upload_to=generate_user_folder_avatar,validators=[is_square_png]) 

    def create_user_profile(sender, instance, created, **kwargs): 
     if created: 
      Profile.objects.create(user=instance) 

    post_save.connect(create_user_profile, sender=User) 

Я установил AUTH_PROFILE_MODULE = 'tracks.Profile' в settings.py, но когда я запускаю мой сервер я получаю эту ошибку:

NameError: name 'post_save' is not defined 

Любая идея, что я делаю неправильно здесь? Я использую Django 1.9 и Python 3

ответ

6
NameError: name 'post_save' is not defined 

вы должны сделать импорт:

from django.db.models.signals import post_save 

примечание # 1: вы можете быть заинтересованы в том, что Django обеспечивает более четкий и ясный путь расширить User модель: https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#extending-django-s-default-user

примечание # 2: вы, вероятно, хотите сотрудничать nnect сигналы не где-то в моделях, но вот так: https://stackoverflow.com/a/21612050/699864

+1

Собственно, следующий ответ более подходит: http://stackoverflow.com/a/21612050/1628832 для точки № 2 – karthikr

+0

@karthikr ty! заменил ссылку на примечание №2. –

Смежные вопросы