2016-08-23 37 views
1

我不知道如何使用Django-datatable-view呈現可編輯的表格。我想創建一個如下所示的表格:http://django-datatable-view.appspot.com/x-editable-columns/來自型號City如何在django-datatable-view中渲染表格?

我讀過的文檔和教程,但仍然無法弄清楚如何創建表。

這是我迄今所做的:

{% extends "base.html" %} 
{% block head %} 
    {% load static %}e 
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.12/css/dataTables.bootstrap.min.css"> 
    <script src="https://cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script> 
    <script src="https://cdn.datatables.net/1.10.12/js/dataTables.bootstrap.min.js"></script> 
    <script src="{% static "datatable/js/datatableview.min.js" %}"></script> 
    <script> 
     datatableview.auto_initialize = false; 
     $(function() { 
      var xeditable_options = {}; 
      datatableview.initialize($('.datatable'), { 
       fnRowCallback: datatableview.make_xeditable(xeditable_options), 
      }); 
     }) 
    </script> 
{% endblock %} 
{% block content %} 
    {{ datatable }} 
    {{ object_list }} 
{% endblock %} 

而我的看法是:

class ZeroConfigurationDatatableView(dtv_views.XEditableDatatableView): 
    model = dolava_models.City 

    datatable_options = { 
     'columns': [ 
      'id', 
      ("Name", 'name', dtv_helpers.make_xeditable), 
      ("Country", 'country', dtv_helpers.make_xeditable), 

     ] 
    } 

不幸的是我的代碼呈現此:

enter image description here

+0

您還沒有定義表格標籤。 –

+0

@UsmanMaqbool如果你知道如何定義標籤,你可以發佈一個答案。我不知道你的標籤是什麼意思。 –

回答

0
{% block content %} 
    {% if instances %} 
     <table class='datatable'> 
      <tr> 
       <th>ID</th> 
       <th>Name</th> 
       <th>Country</th> 
      </tr> 
      {% for row in instances %} 
       <tr> 
        <th> {{ row.id }}</th> 
        <th> {{ row.name }}</th> 
        <th> {{ row.country }}</th> 
       </tr> 
      {% endfor %} 
     </table> 
    {% else %} 
     <p>No data available</p> 
    {% endif %} 
{% endblock %} 
+0

要求在'django-datatable-view'中提出表格 – mehmet

+1

感謝您使用此代碼片段,該代碼片段可能會提供一些有限的即時幫助。一個[正確的解釋將大大提高其長期價值](/ meta.stackexchange.com/q/114762/350567)通過顯示*爲什麼*這是一個很好的解決方案,並會使它對未來更有用有其他類似問題的讀者。請[編輯]你的答案以添加一些解釋,包括你所做的假設。 – iBug

2

作爲第一步,嘗試運行埋在示例項目:

django-datatable-view/datatableview/tests/example_project/example_project/example_app 

要做到這一點,按照項目的GitHub頁面上的Documentation and Live Demos,但可以肯定,然後再開始與django==1.8更換django>=1.4。也就是說,根據我的經驗,它與django1.9或1.10不兼容。

一旦你做到這一點,你將有一整套的工作實例和匹配的文件,這將緩解事情有點。您提供的鏈接已過時。探索示例(example_app/views.py)和文檔。

當你準備走出沙盒,遵循這條路線:

  1. 啓動一個新的virtualenv

  2. 克隆此分支:https://github.com/jangeador/django-datatable-view/(它有一些更多的提交,使得它與最新版本的django兼容)和pip安裝(如果您打算進行更改,請使用-e可編輯選項)。

  3. 仿效這一做法Datatable object and Meta從運行示例應用程序的。在代碼:

    class MyDatatable(Datatable): 
        class Meta: 
         model = Entry 
         columns = ['id', 'headline', 'pub_date', 'n_comments', 'n_pingbacks'] 
         ordering = ['-id'] 
         page_length = 5 
         search_fields = ['blog__name'] 
         unsortable_columns = ['n_comments'] 
         hidden_columns = ['n_pingbacks'] 
         structure_template = 'datatableview/default_structure.html' 
    
    class ConfigureDatatableObjectDatatableView(DatatableView): 
        model = Entry 
        datatable_class = MyDatatable 
    

您可以刪除Datatable類的所有屬性,如果你不需要(它們是可選的)。

除了文檔,我不得不重寫的DataTableView類下面的方法,使其工作。

def get_template_names(self): 
    return "example_base.html" 

這是您的模板文件,它需要包含:

<script src="{% static 'path-to/datatables.min.js' %}" type="text/javascript"></script> 
<link href="{% static 'your-path-to/datatables.min.css' %}" rel="stylesheet"> 

<script type="text/javascript" src="{% static 'js/datatableview.js' %}"></script> 

{{ datatable }} 

<script> 
    // Page javascript 
    datatableview.auto_initialize = true; 
</script> 

值得關注的是這裏的datatableview.js從Django的數據表,視圖模塊包含(以及伴隨的datatableview.auto_initialize = true;)。如果您對datatables.js感到滿意,您可以自己進行配置,但由於您對django-datatable-view也是新手,因此這可能是最簡單的途徑。