Django, ошибка: запрос соответствия UserProfile не существует - PullRequest
2 голосов
/ 19 февраля 2012

Я учу Джанго.Сейчас мне нужно создать Userprofile.

Я уже создал модель, которая является

class UserProfile(models.Model):  
user = models.OneToOneField(User)  
active = models.BooleanField()
address = models.CharField('Shipping address', max_length=150, blank=True, null=True)
telephone = models.CharField('Telephone number for shipping', max_length=20, blank=True, null=True)
steps = models.DecimalField('Steps since creation', max_digits=100, decimal_places=2, null=True)
active = models.BooleanField()

def __str__(self):  
    return "%s's profile" % self.user  

внутри приложения, называемого бухгалтерским учетом.Я уже создал

def create_user_profile(sender, **kwargs):
#When creating a new user, make a profile for him or her.
u = kwargs["instance"]
if not UserProfile.objects.filter(user=u):
    UserProfile(user=u).save()

post_save.connect (create_user_profile, sender = User)

Таким образом, каждый раз, когда создается пользователь, автоматически создается профиль.Я уже создал и подтвердил, что пользователь был создан в таблице userprofile.Я тоже пошел снаряд.Я искал того пользователя с идентификатором 4. Я напечатал адрес для пользователя 4 и получил адрес.Так что я уверен, что они связаны и работают.Но когда я перехожу к HTML, я получаю сообщение об ошибке.

Вот представление.

    from accounting.models import UserProfile, Charge, Wallet
from django.shortcuts import get_object_or_404, RequestContext
from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.template import Context, loader
from django.contrib.auth.forms import UserCreationForm

#def userprofile(request, user_id):
def userprofile(request, user_id):


user_profile = request.user.get_profile()
active = user_profile.active
return render_to_response('accounting/templates/userprofile.html', {
    'user_profile': user_profile,   
    'active': active,
}, context_instance=RequestContext(request))

Спасибо.

Ответы [ 2 ]

2 голосов
/ 19 февраля 2012

Убедитесь, что вы установили AUTH_PROFILE_MODULE = 'my_profile_app.UserProfile' в settings.py

0 голосов
/ 19 февраля 2012

Вместо:

request.user.get_profile()

Использование:

request.user.userprofile

После нескольких лет разработки Django, никогда не требовалось AUTH_PROFILE_MODULE или get_profile (). Я не знаю, в чем преимущество использования get_profile () (если есть), но это кажется ненужным хлопотом.

На самом деле, я переживаю еще меньше хлопот, используя AutoOneToOneField от django-annoying: https://bitbucket.org/offline/django-annoying/wiki/Home

Подробнее об OneToOne: https://docs.djangoproject.com/en/dev/topics/db/models/#one-to-one-relationships

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...