2017-06-18 11 views
2

私は数日間この問題に苦労しています。 django-datatable-viewのxeditable列の統合を使用したいと思います。私のコードはデータテーブルを正しくロードしますが(see here)、make_xeditableにカラムを指定するたびに、500の内部サーバエラーが発生します。私は、django-datatable-viewについて議論するいくつかのページ(リンクが十分ではないためにリンクを張ることはできません...)を見てきましたが、x-editableオプションについては議論していません。Django-datatable-view X編集可能な内部サーバーエラー

ライブデモオンライン(here)(バージョン0.7)のスニペットを使用するだけで何もできません。表はロードされますが、列は編集できません。

class PriceListDataTableView(XEditableDatatableView): 
    model = PriceList 
    datatable_options = { 
     'columns': [ 
      'id', 
      'date', 
      'product', 
      'unit', 
      ("Price", 'price', helpers.make_xeditable), 
     ] 
} 

ローカルホスト上で最新バージョン(0.9)を実行していて、その例が動作します。しかし、私は自分のアプリでそれを動作させることはできません。どちらのセットアップはここではDjango 1.8

を実行して、私のモデルである:ここでは

class PriceList(models.Model): 

    # Fields 
    date = models.DateField(verbose_name="Price list date") 
    product = models.CharField(verbose_name="Product name", max_length=100) 
    unit = models.CharField(verbose_name="Unit", max_length=6) 
    price = models.DecimalField(verbose_name="Price", decimal_places=2, 
       max_digits=10) 

は私のテンプレートです:ここでは

{% extends "agrichem/base.html" %} 
{% block content %} 

<script> 
$(document).ready(function() { 
    <!-- Initialization for x-editable tables --> 
    $.fn.editable.defaults.mode = 'inline'; 
    $(function(){ 
     var xeditable_options = {}; 
     datatableview.initialize($('.datatable'), { 
       fnRowCallback: datatableview.make_xeditable(xeditable_options), 
     }); 

    }); 
}); 
</script> 

{{ datatable }} 

{% endblock %} 

が私の見解です:

class PriceListDataTableView(XEditableDatatableView): 
    model = PriceList 

    class datatable_class(Datatable): 
     class Meta: 
      columns = ['id', 'date', 'product', 'unit', 'price'] 
      processors = { 
       'price': helpers.make_xeditable, 

      } 

私はprocessorsを削除した場合私のテーブルはロードされますが、編集はできません。それで、私はポップアップが表示されます:

DataTables警告:テーブルid = DataTables_Table_0 - Ajaxエラー。サーバが2XXコードを返さないときには、このエラーの詳細については、datatables.net/tn/7

を参照してください。このポップアップエラーが送信されますので、基本的に次の理由ビットの起こります:コンソールで

私は(リンク数のだって妨害)500内部サーバーエラーが表示されます。

jquery.min.js:4 GETのht__tp://127.0.0.1:?8000 /価格表/ドロー= 1 &カラム%5B0%5D%5Bデータ%5D = 0 &カラム%art = 0 &長さ= 25私は今の円でつもりです210%検索5Bvalue%5D = &検索%5Bregex%5D = falseを& _ = 1497779941842 500(内部サーバーエラー)

、私はいくつかの助けを必要としています。誰もがこの作業を持っていますか?

編集: django-datatable-viewをバージョン0.8にダウングレードしました。以下に示唆されている推奨されている構文を使用しました。これについてもSAME 500 Internal Serverエラーが発生します。私は、どこかのいくつかの重要なセットアップステップが欠落していると思われますが、ドキュメンテーションなどは何も言いません。

答えて

0

及びIはジャンゴ-データテーブルビューをあきらめたサークルに向かいます。私はインライン編集のためにそれを動作させることができませんでした。これが私の第一の要件でした。

次に、django-inplaceeditが見つかりました。それは魅力を発揮し、私が必要とするすべてです。

私はそうのようなテンプレートの私のテーブルをレンダリング:

{% extends "site_base.html" %} 


{% block more_extra_script %} 

    {% load inplace_edit %} 
    {% inplace_css 0 %} 
    {% inplace_js 1 0 %} 

{% endblock more_extra_script %} 


{% block content %} 

<div class="container-fluid"> 
    <p><a class="btn btn-default" href="{% url 'pricelist_list' %}">PriceList Listing</a></p> 

    <h2>Pricelist for {{ pricelist_date }}</h2> 
    <p>Double-click a price to edit it</p> 

    <table class="table table-responsive table-striped .table-bordered .table_hover"> 
     <thead class="info"> 
      <th>Product</th> 
      <th>Unit</th> 
      <th>Price</th> 
     </thead> 
     <tbody> 
      {% for prod in products %} 
       <tr> 
        <td>{{prod.product}}</td> 
        <td>{{prod.unit}}</td> 
        <td>{% inplace_edit "prod.price" %}</td> 
       </tr> 
      {% endfor %} 
     </tbody> 
    </table> 

</div> 
{% endblock %} 

このアプリの美しさは、それが透過的にすべてのサーバー側のものを扱うということです。フィールドをダブルクリックして変更し、Enterキーを押すと、データベース内の値が更新されます。

0

class PriceListDataTableView(XEditableDatatableView): 
    model = PriceList 
    datatable_options = { 
     'columns': [ 
      'id', 
      ("Price", 'price', helpers.make_xeditable), 
      ... 
     ] 
    } 

EDITしてみてください:

// Page javascript 
datatableview.auto_initialize = false; 
$(function(){ 
    var xeditable_options = {}; 
    datatableview.initialize($('.datatable'), { 
     fnRowCallback: datatableview.make_xeditable(xeditable_options), 
    }); 
}) 

はEDIT:CSRFトークンは、テンプレートに欠けている、以下に再現:

{% extends "agrichem/base.html" %} 
{% block content %} 

<script> 
$(document).ready(function() { 
    <!-- Initialization for x-editable tables --> 
    $.fn.editable.defaults.mode = 'inline'; 
    $(function(){ 
     var xeditable_options = {}; 
     datatableview.initialize($('.datatable'), { 
      fnRowCallback: datatableview.make_xeditable(xeditable_options), 
     }); 

    }); 
}); 
</script> 

ます。また、ページレベルの初期化が必要行は

です多くのフラストレーション後
{% csrf_token %} 

{{}}データテーブル

{%の末端ブロック%}

+0

私は上記のように私の質問でそれを試みました。表はロードされますが、列は編集できません。 – LumeShadow

+0

おっと:ページの初期化を忘れました。上記の編集をご覧ください。 – mikep

+0

申し訳ありませんが、テーブルはまだロードされていますが、列は編集できません... – LumeShadow

関連する問題