2015-06-06 56 views
0

我已經 models.py的Django的queryset通過用戶名在用戶模型

class UserProfile(models.Model): 
    user = models.OneToOneField(User) #from contrib.auth,... 
    titulo = models.CharField(max_length=50, blank=True, default="") 
    descripcion = models.TextField(default="") 

    # Valor por defecto, "Pagina de +nombre usuario" 
    def save(self, *args, **kwargs): 
     if not self.titulo: 
      self.titulo = "Pagina de " + self.user.get_username() 
     super(UserProfile, self).save(*args, **kwargs) 

views.py

def ShowUserPage(request): 
    UsuarioElegido = request.path.split('/')[1] 
    UsuarioModel = UserProfile.user.get_user(UsuarioElegido) 
    return HttpResponse(UsuarioElegido) 

我想獲得UsuarioElegido的 「TITULO」 和 「descripcion」。 UsuarioElegido是例如/「root」的request.path。但我無法獲得幫助?

收到此錯誤:ReverseSingleRelatedObjectDescriptor」對象有沒有屬性 'GET_USER' UsuarioModel = UserProfile.objects.filter(user.username = UsuarioElegido)

,但我不知道如何得到它。前

  UsuarioModel = UserProfile.objects.filter(user.username=UsuarioElegido) 

編輯這個嘗試:我只是嘗試這樣做,不過在Django無法FINDE我的看法ShowUserPage:/?

def ShowUserPage(request): 
    UsuarioElegido = request.path.split('/')[1] 
    UsuarioModel = User.objects.get(username=UsuarioElegido) 
    UsuarioModel = UserProfile.objects.filter(user=UsuarioModel) 
    return HttpResponse(UsuarioElegido) 
+0

UsuarioElegido是用戶屬性嗎? – nu11p01n73R

+0

這裏有相當長的錯誤。你完成了教程嗎?例如,你不應該手動分割路徑;你應該使用url模式通過正則表達式提取用戶名。 –

+0

正則表達式?哦,我知道,但是..我打印它,它的工作原理。我應該按照你告訴我的方式改變它。 – dmanso

回答

1

假設username是獨一無二的:

UsuarioModel = UserProfile.objects.get(user__username=UsuarioElegido) 

使用__(雙下劃線)follow relations in lookups

+0

我從來沒有見過__username 是唯一的是從django auth db – dmanso

+0

它工作! THAAAAANKS! – dmanso

1

首先,您不必自行分析request.path並提取URL的所有必要部分。您可以使用urls.py文件映射此文件。例如像這樣:

urlpatterns = [ 
    url(r'^user/(?P<username>\w+)$', views.ShowUserPage), 
] 

並處理這個請求您的ShowUserPage視圖的方法有以下特徵:

def ShowUserPage(request, username) 

第二,如果你想用它的名字來尋找用戶,可以使用以下查詢:

UserProfile.objects.get(user__username=UsuarioElegido) 

它將搜索username用戶的本機Django類的屬性。

+0

謝謝!我在哪裏可以使用urls.py來映射這個?我認爲我以前做過,但我不記得...... doc? – dmanso