5
我有一個表django的:Django的tables2的DetailView CBV將不顯示單個對象
import django_tables2 as tables
from .models import Account
from django_tables2.utils import A # alias for Accessor
class AccountTable(tables.Table):
nickname = tables.LinkColumn('accounts:detail', args=[A('pk')])
class Meta:
model = Account
attrs = {'class': 'table table-striped table-hover'}
exclude = ("created", "modified", "destination")
視圖:
class DetailView(SingleTableMixin, generic.DetailView):
template_name = 'accounts/account_detail.html'
context_table_name = 'table'
model = Account
table_class = AccountTable
context_object_name = object
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(DetailView, self).dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(object=self.object)
context['title'] = 'Account Detail'
context['pk'] = self.kwargs.get(self.pk_url_kwarg, None)
return context
和模板:
<!DOCTYPE html>
{% extends "accounts/base.html" %}
{% load django_tables2 %}
{% load render_table from django_tables2 %}
<title>Account Detail</title>
{% block content %}
<br>
<br>
<h1>{{ object.id }} : {{object.nickname}}</h1>
<div>
{% render_table table %}
</div>
{% endblock %}
它正確地獲取對象pk和所有內容,但不會僅發送單個對象來填充表格。我知道它獲取對象,因爲object.id和object.nickname都能正確顯示。我知道有可能只顯示一個特定的對象,因爲我在同一個項目中有另一個應用程序,只顯示一個對象,如果你點擊鏈接,將你帶到DetailView(我借用的帳戶模型重新創建的模板)。但它只會顯示所有對象的表格。
如果需要,我可以提出請求數據。我可以向你保證,我已經看到模板上下文中的對象,而且它必須是或object.id不起作用。 django-tables2的訣竅是什麼?顯然我已經做過一次了!
當我嘗試,如果沒有支架我得到這個錯誤: 「數據必須是查詢集類(具有計數和ORDER_BY)或支持列表(數據) - 帳戶既沒有。」 然後,我看到你有一個支架,它的工作。謝謝! – mastachimp
括號是必需的,因爲django-tables2期望'get_table_data'返回像查詢集或列表那樣的迭代,而不是單個對象。 – Alasdair