2013-08-24 26 views
5

Tôi đang thực hiện các bước đầu tiên với Python/Django và đã viết một ứng dụng mẫu với nhiều ứng dụng Django trong một dự án Django. Bây giờ tôi đã thêm một ứng dụng khác được gọi là "trang tổng quan" nơi tôi muốn hiển thị dữ liệu từ các ứng dụng khác nhau. Tại thời điểm này tôi vẫn sử dụng quan điểm này đơn giản dựa trên lớp chung chung, trong đó cho thấy các mục của nhỏ của tôi chỉ liên lạc ứng dụng trên bảng điều khiển:Hãy tham khảo nhiều Mô hình trong Chế độ xem/Mẫu ở Django

views.py:

from django.views.generic import ListView 
from contacts.models import Contact 

class ListDashboardView(ListView): 
    model = Contact 
    template_name = 'dashboard.html' 

urls.py:

url(r'^$', dashboard.views.ListDashboardView.as_view(), 
    name='dashboard-list',), 

Trong dashboard.html tôi làm:

<ul> 
    {% for contact in object_list %} 
    <li class="contact">{{ contact }}</li> 
    {% endfor %} 
</ul> 

ai có thể giải thích cho người mới bắt đầu làm thế nào để truy cập vào nhiều m odels trong mẫu của tôi? Tôi không chỉ hiển thị các địa chỉ liên hệ từ ứng dụng 'liên hệ' của tôi mà còn hiển thị dữ liệu từ các ứng dụng khác như ứng dụng 'khoảng không quảng cáo' của tôi và ứng dụng thứ ba.

Tôi biết, tôi phải nhập khẩu nó:

from inventory.models import Asset 
from polls.models import Poll 

Nhưng những gì đã được thực hiện để vượt qua tất cả các dữ liệu này vào mẫu đơn của tôi sử dụng một cái nhìn? Và làm thế nào tôi có thể truy cập dữ liệu đó trong mẫu của tôi?

Giải pháp có thể ở số Django Pass Multiple Models to one Template nhưng tôi phải thú nhận rằng tôi thực sự không hiểu.

Trả lời

8

Bạn cần phải ghi đè lên các phương pháp get_context_data và vượt qua bất cứ điều gì bạn muốn trong bối cảnh:

class ListDashboardView(ListView): 
    model = Contact 
    template_name = 'dashboard.html' 

    def get_context_data(self, **kwargs): 
     ctx = super(ListDashboardView, self).get_context_data(**kwargs) 
     ctx['polls'] = Poll.objects.all() 
     return ctx 
0

Để thêm vào Aamir của câu trả lời

trong html bạn sẽ làm gì:

{% for contact in object_list %} 
<li>{{contact.object}}</li> 
{% endfor %} 

để tham chiếu các đối tượng mô hình "liên hệ"

{% for x in polls %} 
<li>{{ x.object }}</li> 
{% endfor %} 

để tham khảo các "thăm dò" đối tượng mô hình

(đây không phải là trực quan đối với tôi lúc đầu).

Các vấn đề liên quan