查询过滤器Django

时间:2017-03-30 10:29:17

标签: python django filter

我想将nilai调用到模板中的表格中。这是我的模特:

class AlternatifJalur(models.Model):
    nama = models.CharField(max_length=100)
    def __str__(self):
        return self.nama

class KriteriaJalur(models.Model):
    TIPE_KRITERIA_CHOICES = (
        ('benefit', 'Benefit'),
        ('cost', 'Cost'),
    )
    nama = models.CharField(max_length=100)
    bobot = models.DecimalField(max_digits = 20, decimal_places = 2)
    keterangan = models.TextField()
    tipe = models.CharField(max_length=100, choices=TIPE_KRITERIA_CHOICES, default='Benefit')

    def __str__(self):
        return self.nama

class Matriks(models.Model):
    kriteria = models.ForeignKey(KriteriaJalur)
    alternatif = models.ForeignKey(AlternatifJalur)
    nilai = models.DecimalField(max_digits = 20, decimal_places = 2)

    def nilai_float(self):
        return float(self.nilai)

这是我的观点:

def index(request):
    kriteria = KriteriaJalur.objects.all()
    alternatif = AlternatifJalur.objects.all()
    matriks = Matriks.objects.all()
    krite = KriteriaJalur.objects.get(nama='Jarak')
    return render(request, 'index.html', {"kriteria":kriteria, "alternatif":alternatif, "matriks":matriks})

如何从我的模型中的nilai班级拨打Matriks,以便kriteria班级中的Matriks等于nama kriteria alternatif我的Matriks班级中的班级nama等于alternatif班级中的rm -r

2 个答案:

答案 0 :(得分:0)

根据我的理解,您可能希望使用filter和/或Q来根据matriks kriteria和/来过滤您的nama obj或alternatif nama

将您的index视图更改为:

from django.db.models import Q

def index(request):
    kriteria = KriteriaJalur.objects.all()
    alternatif = AlternatifJalur.objects.all()

    # The below will contain all matriks whose kriteria nama is 'Kriteria A' AND alternatif nama is 'Jalur A'
    matriks = Matriks.objects.filter(kriteria__nama='Kriteria A', alternatif__nama='Jalur A')

    # The below will contain all matriks whose kriteria nama is 'Kriteria A' OR alternatif nama is 'Jalur A'
    matriks = Matriks.objects.filter(Q(kriteria__nama='Kriteria A') | Q(alternatif__nama='Jalur A'))

    krite = KriteriaJalur.objects.get(nama='Jarak')
    return render(request, 'index.html', {"kriteria":kriteria, "alternatif":alternatif, "matriks":matriks})

这个怎么样:

<!-- index.html -->

{% for matrik in matriks %}
    {{ matrik.nilai }}
{% endfor %}

<table class="table table-hover">
    <tr>
        <th>#</th>
        {% for item in matriks %}
            <th>{{ item.kriteria.nama }} ({{ item.kriteria.bobot }} %)</th>
        {% endfor %}
        {% for item in alternatif %}
        <tr>
            <td>{{ item.nama }}</td>
            {% for matrik in matriks %}
                <td>{{ item.JalurA }}</td>
                <td></td>
                <td></td>
            {% endfor %}
        </tr>
        {% endfor %}
    </tr>
</table>

答案 1 :(得分:0)

This is the table picture

在'Kriteria A'栏和'Jalur A'栏中的

将出现matrik.nilai,其中alternatif ='Jalur A'和kriteria ='Kriteria A'

@nik_m

相关问题