【问题标题】:Django - pass these specific model objects to one templateDjango - 将这些特定模型对象传递给一个模板
【发布时间】:2016-07-08 22:35:06
【问题描述】:

型号

class Person( models.Model ):
    first_name = models.CharField( max_length=50 )
    last_name = models.CharField( max_length=50 )    

    def __str__(self): 
        return "{0} {1}".format( self.first_name, self.last_name )    

查看功能

def getPersonData(request):
    currPersonData = {}    

    # get current user
    currentUser = request.user
    # create a person object based on who is logged in. 
    person = Person.objects.create(first_name=currentUser.first_name,
                                   last_name=currentUser.last_name) 

    # getting front loaded personMeta, that user CANNOT provide                              
    personDetails = PersonMeta.objects.filter(legal_first_name=currentUser.first_name,
                                              legal_last_name=currentUser.last_name).values()
    # setting hash key for dict 
    currUserKey = "{0} {1}".format(currentUser.first_name, currentUser.last_name)

    # setting dictionary
    # data[currUserKey] = currentUser
    # if person details is not false
    if (personDetails):
        currPersonData[currUserKey] = personDetails    

    return currPersonData    

查看调用函数并将数据返回到模板。

def signup(request):
    currPersonData = getPersonData( request )
    return render( request, '/signup.html/', {'data': sorted( currPersonData.items( ) )}, )    

网址

    url(r'^signup/$', views.signup),    

模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SignUp</title>
</head>
<body>    

    {% for tuple in data %}
    <p>Tuple key: {{ tuple.0 }}</p>
    {% for key, value in tuple.1.0.items %}
        <p>Dict key, value: {{ key }}: {{ value }}</p>
    {% endfor %}
{% endfor %}    


    {% for values in eb %}
        <p>values</p>
    {% endfor %}    

</body>
</html>    

以上所有似乎都按我期望的方式工作。我可以获取我想要的数据并将其传递给模板。现在我想获取下面模型的所有对象,并将所有这些对象传递给我的“/signup.html/”,除了上面传递的内容,这样我就可以开始表单处理了。

class Elective( models.Model ):
    elective_title = models.CharField( max_length=100 )
    elective_description = models.CharField( max_length=100 )    

    def __str__(self):
        return "{0}".format( self.elective_title )    

我尝试关注 Django Pass Multiple Models to one Template

Refer to multiple Models in View/Template in Django

结果不成功,现在我已经为此工作了一段时间,我认为我的下一个最佳举措是寻求帮助。

【问题讨论】:

  • 为什么不在上下文中简单地传递更多变量? (在render 函数中)。
  • @Wtower 您介意指点示例或文档吗?

标签: django django-views


【解决方案1】:

您可以在视图的上下文中传递多个模型。在你的视图函数中,例如:

def signup(request):
    currPersonData = getPersonData( request )
    return render( request, '/signup.html/', {
        'data': sorted( currPersonData.items( ) ),
        'electives': Elective.objects.all(),
    })   

【讨论】:

  • 我会将其标记为已接受的答案,请注意我使用了 `'electives': Elective.objects.all().values() `
猜你喜欢
  • 2012-08-24
  • 2016-11-17
  • 2011-08-17
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多