2017-05-05 66 views
-3

我有一个与每个Django用户关联的模型User_Details。它有一个名为mobile_number的字段。我想访问我的模板中的mobile_number。我正在尝试request.user.User_Details.mobile_number,但它不起作用。这是正确的方式吗?如果不是,那我应该怎么办呢?访问模板中与django用户关联的模型的字段

+0

我们不能说,因为你没有在你的问题中包括模型。将其更改为'request.user.user_details.mobile_number'可能有效。 – Alasdair

+0

你为什么需要这个? –

+0

您是否真的在问我们为什么需要您询问的模型细节? –

回答

0

试试这个(我假设index.html作为模板,这是正确的urls.py设置):

from django.contrib.auth.models import User 

def index(request): 
    template = loader.get_template('index.html') 
    user_details = User_Details.objects.get(user=User.objects.get(username=request.user.username)) 

    context = RequestContext(request, {'mobile_no':user_details.mobile_number,} 
    return HttpResponse(template.render(context)) 

工作,如果你有一个用户对象(django.contrib.auth.models)您User_Details型号

class User_Details(models.Model): 
    user = models.OneToOneField(User) 
    mobile_number = models.CharField(... 
在您的index.html或任何模板使用

{{mobile_no}} 

到DISPL

然后唉信息

+0

我知道这种方法,但我想直接在我的模板中使用'request.user'来完成此操作。 –

+0

您必须访问服务器端的数据库,这意味着您必须将请求发送到django后端。你是什​​么意思“直接在模板”? HTTP身份验证模型不知道有关您的User_Details的任何信息。它们存储在数据库中 – EvilSmurf

0

其defficult告诉不看你的模型,但我想你可以使用在OneToOneFieldrelated_name并直接访问它。

class User_Details(models.Model): 
    user = models.OneToOneField(User, related_name="detail") 
    mobile_number = models.CharField(... 

然后 request.user.detail.mobile_number访问它。 希望它有帮助