Ho una tabelladjango: django-tables2 detailview CBV non visualizzerà solo oggetto
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")
Una vista:
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
E un modello:
<!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 %}
E correttamente ottiene l'oggetto pk e tutto, ma non invia solo il singolo oggetto per popolare la tabella. So che ottiene l'oggetto perché object.id e object.nickname vengono visualizzati correttamente. So che è possibile visualizzare solo un oggetto specifico perché ho un'altra app nello stesso progetto che visualizza un solo oggetto se fai clic sul link che ti porta a DetailView (il modello di cui ho preso in prestito per ricreare con i miei modelli di Account)). Ma mostrerà solo una tabella di TUTTI gli oggetti.
Posso inserire i dati di richiesta, se necessario. Posso prometterti che ho visto l'oggetto nel contesto del modello, e in effetti deve essere o object.id non funzionerebbe. Qual è il trucco per django-tables2? Apparentemente l'ho già fatto una volta!
ottengo questo errore quando provo che senza la staffa: "dati devono essere QuerySet-simile (hanno contare e order_by) o lista di sostegno (dati) - Conto nessuno dei due ha." Poi ho visto che avevi una staffa e funzionava. Grazie! – mastachimp
Le parentesi sono obbligatorie perché django-tables2 si aspetta 'get_table_data' per restituire un iterabile come un queryset o un elenco, non un singolo oggetto. – Alasdair