2016-02-03 5 views
1

У меня есть расширенная пользовательская модель в django.Проверка подлинности пользователя Django ForeignKey

class userProfile(models.Model): 
     user   = models.OneToOneField(User, related_name="profile") 
     uniID   = models.CharField(max_length=6) 

Кроме того, я хочу войти, когда пользователь входит в мою систему с помощью:

class systemEntry(models.Model): 
     user = models.ForeignKey(userProfile) 
     time = models.DateTimeField(auto_now=True) 

Я использую модель аутентификации Джанго при входе пользователя в систему:

tempUser = auth.authenticate(username = myCredentials['username'], password = myCredentials['password']) 
p = systemEntry(user = userProfile.objects.filter(user.get_profile().username=myCredentials['username'])) 
p.save() 

Предоставление ошибки:

keyword can't be an expression (views.py, line 29)

Где моя ошибка?

+0

Возможный дубликат [метода Django получить \ _profile() не работает на расширенной модели пользователя] (http://stackoverflow.com/questions/13183264/django-get -profile-method-not-working-on-extended-user-model) – Sayse

ответ

1

Вместо того чтобы использовать фильтр, вы должны использовать .get и внутренний запрос не является правильным, вы должны сделать следующее:

p = systemEntry(user = user.userprofile) 
p.save() 

Если вы likte использовать userProfile.objects.filter(user.get_profile().username=myCredentials['username']) Вы должны знать, что он не может быть сделано таким образом, а вы должны сделать,

userProfile.objects.get(user__username=myCredentials['username']) 
+0

Не удается разрешить ключевое слово «имя пользователя» в поле. Я не могу прочитать поле имени пользователя из userProfile –

+0

Я отредактировал ответ –

+0

Спасибо за помощь. Еще одна ошибка: принуждение к Unicode: нужна строка или буфер, найденный пользователем –