简体   繁体   English

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

[英]Django queryset by username in user model

I've models.py 我有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 views.py

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

I wanna get "titulo" and "descripcion" of UsuarioElegido. 我想得到UsuarioElegido的“ titulo”和“ descripcion”。 UsuarioElegido is the request.path for example /"root". UsuarioElegido是request.path,例如/“ root”。 But I can't get it Help? 但我无法获得帮助吗?

getting this error: ReverseSingleRelatedObjectDescriptor' object has no attribute 'get_user' UsuarioModel = UserProfile.objects.filter(user.username=UsuarioElegido) 出现此错误:ReverseSingleRelatedObjectDescriptor对象没有属性'get_user'UsuarioModel = UserProfile.objects.filter(user.username = UsuarioElegido)

but I don't know how to get it. 但我不知道如何得到它。 Tried this before 之前尝试过

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

EDIT: I've just tried this, but Django can't finde my ShowUserPage in views :/? 编辑:我刚刚尝试过,但是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)

Assuming username is unique: 假设username是唯一的:

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

Use __ (double underscore) to follow relations in lookups . 使用__ (双下划线) 跟踪查找中的关系

First of all, you don't have to analyze request.path on your own and extract all necessary parts of the URL. 首先,您不必自己分析request.path并提取URL的所有必要部分。 You can map this using urls.py file. 您可以使用urls.py文件进行映射。 For example like this: 例如这样:

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

And your ShowUserPage view method that handles this request has following signature: 您处理该请求的ShowUserPage视图方法具有以下签名:

def ShowUserPage(request, username)

Second, if you want to look for the user by its name, you can use following query: 其次,如果要按用户名查找用户,则可以使用以下查询:

UserProfile.objects.get( user__username=UsuarioElegido )

It will search by username attribute of the native Django class for User. 它将通过本地Django类的username属性搜索User。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM