แสดงเฉพาะแถวที่ระบุใน DataTables

ฉันต้องการแสดงเฉพาะชุดแถวใน JQuery Datatables ตามเงื่อนไขบางประการ (แบบสอบถาม/URL ของหน้า)

ฉันใช้ REST API เพื่อส่งข้อมูลใน AJAX นี่คือตัวอย่างทั้งหมดของฉัน

$(document).ready(function() {
    //datatables
    $('#mytable').DataTable({
      "ajax": "http://127.0.0.1:8000/api/v1/example/?format=datatables",

     "serverSide": true,
     "processing": true,

      "columns": [
          {"data": "col1"},
          {"data": "col2"},
          {"data": "col3"},
      ],

      "dom": "<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>>" +
             "<'row'<'col-sm-12'tr>>" +
             "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-4'p>>",
    });
} );

ฉันต้องการแสดงเฉพาะชุดย่อยของแถวตามเงื่อนไขบางอย่างของ col1 เป็นต้น

มีวิธีระบุแถวเหมือนที่เราระบุคอลัมน์หรือไม่?


person Marouen    schedule 19.03.2020    source แหล่งที่มา
comment
การกรองข้อมูลทางฝั่งเซิร์ฟเวอร์จะเหมาะสมที่สุด   -  person Rory McCrossan    schedule 19.03.2020
comment
สิ่งนี้ตอบคำถามของคุณหรือไม่? jQuery DataTables กรองแถวตามค่าหลายค่า   -  person PM 77-1    schedule 19.03.2020
comment
@RoryMcCrossan ใช่การกรองฝั่งเซิร์ฟเวอร์ด้วย Django ใช้งานได้ ขอบคุณสำหรับความช่วยเหลือของคุณ. โปรดเพิ่มคำตอบของคุณเพื่อที่ฉันจะได้ปิดคำถามได้หากนี่ไม่สำคัญเกินไป   -  person Marouen    schedule 19.03.2020
comment
พูดตามตรง ฉันไม่รู้สึกว่าได้ตอบคำถามของคุณแล้ว เนื่องจากเป็นเพียงข้อเสนอแนะว่าจะแก้ไขปัญหาอย่างไรให้ดีที่สุด หากคุณต้องการคุณสามารถเพิ่มคำตอบของคุณเองโดยแสดงรหัสที่คุณใช้ซึ่งเป็นที่ยอมรับได้อย่างสมบูรณ์   -  person Rory McCrossan    schedule 19.03.2020


คำตอบ (1)


ตามที่ @RoryMcCrossan แนะนำคำตอบคือการกรองฝั่งเซิร์ฟเวอร์ เนื่องจากฉันใช้ Django การกรองจึงสามารถทำได้ใน views.py

การเรนเดอร์เพจสามารถทำได้ดังต่อไปนี้ตามเงื่อนไขบางประการ:

def page(request):
    items = Item.objects.all()
    items=items.filter(col1="somecondition")
    return render(request, 'page.html', {'items': items})

ในกรณีนี้ datatable จะไม่ถูกเรียกจาก REST API อีกต่อไป แต่เรียกโดยตรงในเทมเพลตจากโมเดลตามที่อธิบายใน models.py

person Marouen    schedule 19.03.2020