0

に並べ替えることはできません。ジャンゴ-tables2は、次のように私は、Djangoのモデルが定義されている特定のフィールド

class DummyModel(models.Model): 
    name = models.CharField(max_length=100, name='Name') 
    description = models.CharField(name='Description', max_length=150) 
    time_points = models.PositiveIntegerField(name="Time Points") 
    more_text = models.CharField(max_length=100, name="More Text") 

    class Meta: 
     db_table = "dummy" 

私は、同様のテーブルクラスを持っているので、後でいくつかのカスタマイズを行うしたいと思います:

class DummyTable(tables.Table): 
    class Meta: 
     model = DummyModel 
     attrs = {'class': 'paleblue'} 

私は次のようである対応するビューを持っている:

@login_required(login_url="login/") 
def review(request): 
    table = DummyTable(DummyModel.objects.all()) 
    RequestConfig(request).configure(table) 
    return render(request, 'review.html', {'reviews': table}) 

は最後に、私はそれを使用して私のテンプレートをイオンレンダリング:

{% block content %} 
    {% load static %} 
    {% load render_table from django_tables2 %} 
    <div class="function-container"> 
     {% render_table reviews %} 
    </div> 
{% endblock %} 

今これは罰金レンダリングが、私は(列ヘッダをクリックして)time Points列をソートしようとすると、エラーが付属しています:

Invalid order_by arguments: [u'Time Points'] 
Request Method: GET 
Request URL: http://127.0.0.1:8000/review/?sort=Time+Points 
Django Version: 1.10.5 
Exception Type: FieldError 
Exception Value:  
Invalid order_by arguments: [u'Time Points'] 

しかし、私がブラウザを指している場合http://127.0.0.1:8000/review/?sort=time_points、これは動作します。だから、どういうわけか正しいフィールド名が渡されません。しかし、これは私が私のtableクラスで列をオーバーライドすることである、これを行う方法を考え出しno such column: dummy.time_points

答えて

0

に返し

time_points = models.PositiveIntegerField(name="time_points", verbose_name="Time Points") 

:私はnameを変更してverbose_namneフィールドを追加しようとしました。だから、今、私のモデルは、単純に次のようになります。

class DummyModel(models.Model): 
    name = models.CharField(max_length=100) 
    description = models.CharField(max_length=150) 
    time_points = models.PositiveIntegerField() 
    more_text = models.CharField(max_length=100) 

    class Meta: 
     db_table = "dummy" 

そして、私のカスタムtableクラスでは、私が持っている:今

class DummyTable(tables.Table): 
    #Override here to change the column header text 
    time_points = tables.Column(verbose_name='Time Points') 
    more_text = tables.Column(verbose_name='More Text') 

    class Meta: 
     model = DummyModel 
     attrs = {'class': 'paleblue'} 

期待通りに並べ替えた作品。

関連する問題