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