Django ORM,按 object.proprety 过滤

ORM django , filtre by object.proprety

我无法从此视图获取结果:

    def bultinPaie(request, id, cin) :
        employe = Employe.objects.get(id = id)
        listSalaire = Salaire.objects.filter(employe.cin == cin)

    return render(request, 'backEnd/bultinPaie.html.html', {'listSalaire' : listSalaire})

我知道 employe.cin 无效,因为它不是 Salaire classe 的财产。

这是我使用的模型

class Employe(models.Model):
    matricule = models.CharField(max_length=255)
    nom = models.TextField()
    prenom = models.TextField()
    cin = models.CharField(max_length=255)
    telephone = models.TextField(max_length=10)
    adresse = models.TextField()
    grade = models.TextField()
    dateEmbauche = models.DateField()

class Salaire (models.Model):
    employe = models.ForeignKey(Employe,on_delete=models.CASCADE)
    montant = models.FloatField(default=0.0)
    mois = models.TextField()
    annee = models.TextField()

您可以过滤:

from django.shortcuts import <b>get_object_or_404</b>

def bultinPaie(request, id, cin):
    employe = <b>get_object_or_404(</b>Employe, id=id<b>)</b>
    listSalaire = Salaire.objects.filter(<b>employe__cin=cin</b>)
    return render(request, ‘backEnd/bultinPaie.html.html', {'listSalaire' : listSalaire})

然而,这里根据另一个参数确定 Salaires。结果,一个人可以用不同的 cin 访问 URL,从而访问其他人 Salaire.

您可能想要过滤:

def bultinPaie(request, id, cin):
    listSalaire = Salaire.objects.filter(<b>employe__id=id,</b> employe__cin=cin)
    return render(request, ‘backEnd/bultinPaie.html.html', {'listSalaire' : listSalaire})