2016-03-22 6 views
0

モデルDjangoは - つのテンプレート

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

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

を以下試みたが、今私はいくつかの時間のためにこれに取り組んできたことを、今、私は私の次の最高の動きを求めるためにあると思いました助けて。

+0

あなたの文脈でもっと多くの変数を渡すのはなぜですか? ( 'render'関数の中で)。 – Wtower

+0

@Wtower例や文書を指しておいてもらえますか? – user136952

答えて

2

ビューのコンテキストで複数のモデルを渡すことができます。あなたのビュー機能では、例えば:

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

私はこれを受け入れられた答えとしてマークします。私は '' electives ':Elective.objects.all()。values() 'を使用しました。 – user136952

関連する問題