簡體   English   中英

用戶模型中按用戶名的Django queryset

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM