django模型中如何像一个模型中的两个外键字段中计数?根据第一个外键字段第二个应该过滤并给出计数?

时间:2020-10-08 05:47:44

标签: python django

我只想知道如何计算列表,就像让所有父母一样,因为所有有多个孩子的父母现在只需要计算受人尊敬的父母中的一个孩子即可。

这是我的模型。py

class Bins(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True)
    bin_level = models.ForeignKey(BinLevel, on_delete=models.CASCADE, blank=True, null=True)
    bin_id = models.CharField(max_length=255)
    

    class Meta:
        db_table = 'bins'

    def __str__(self):
        """Return string representation of our models"""
        return str(self.id) + ' ' + str(self.bin_id)


class AssignedBins(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    provincedetails = models.ForeignKey(ProvinceDetails, on_delete=models.CASCADE)
    municipal_council = models.ForeignKey(MunicipalCouncil, on_delete=models.CASCADE)
    address = models.ForeignKey(Address, on_delete=models.CASCADE)
    owner_name = models.CharField(max_length=255)

    class Meta:
        db_table = 'assignedbins'

    def __str__(self):
        """Return string representation of our models"""
        return str(self.id) + ' ' + self.owner_name

class AssignBinLocations(models.Model):
    assignbin = models.ForeignKey(AssignedBins, related_name='assign_bin', on_delete=models.CASCADE, blank=True, null=True)
    bin = models.ForeignKey(Bins, on_delete=models.CASCADE,related_name='bin')
    latitude = models.FloatField(blank=True, null=True)
    longitude = models.FloatField(blank=True, null=True)
    

    class Meta:
        db_table = 'assignedbinslocations'

    def __str__(self):
        """Return string representation of our models"""
        return str(self.id)

这是我的views.py

def count(request):
    assignedbin = AssignedBins.objects.all()
    binid = []
    for assignedbin_id in assignedbin:
        query = 'SELECT COUNT(bin_id) as bin_count from assignedbinslocations where assignbin_id ='+str(assignedbin_id.id)+';'
        with connection.cursor() as bincount:
            bincount.execute(query)
            list_data = dictfetchall(bincount)
    datas = {"list_data":list_data}
    return Response(datas)

这是我邮递员的结果

“ id”:96, “ bin_location”:[ { “ id”:163, “纬度”:null, “经度”:null,

        },
        {
            "id": 164,
            "latitude": null,
            "longitude": null,
           
        }
    ]
},
{
    "id": 97,
    "bin_location": [
        {
            "id": 165,
            "latitude": null,
            "longitude": null,

计数结果

"list_data": [
        {
            "bin_count": 1
        }
    ]

我的第一个邮递员结果中有两个记录,第一个记录有两个子记录,第二个有一个子记录,请查看我的views.py count函数并帮助我计算这个记录。

0 个答案:

没有答案