[英]Django queryset by username in user model
我有models.py
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是request.path,例如/“ root”。 但我無法獲得幫助嗎?
出現此錯誤:ReverseSingleRelatedObjectDescriptor對象沒有屬性'get_user'UsuarioModel = UserProfile.objects.filter(user.username = UsuarioElegido)
但我不知道如何得到它。 之前嘗試過
UsuarioModel = UserProfile.objects.filter(user.username=UsuarioElegido)
編輯:我剛剛嘗試過,但是Django無法在視圖中找到我的ShowUserPage:/?
def ShowUserPage(request):
UsuarioElegido = request.path.split('/')[1]
UsuarioModel = User.objects.get(username=UsuarioElegido)
UsuarioModel = UserProfile.objects.filter(user=UsuarioModel)
return HttpResponse(UsuarioElegido)
假設username
是唯一的:
UsuarioModel = UserProfile.objects.get(user__username=UsuarioElegido)
使用__
(雙下划線) 跟蹤查找中的關系 。
首先,您不必自己分析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 )
它將通過本地Django類的username
屬性搜索User。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.