簡體   English   中英

Django 根據另一個表中的值過濾表中的數據?

[英]Django filter data in table based on value from another table?

意見.py:

def dcuinterval(request):

var7 = dcu.objects.all()
MU_count = Meter_Mapping_Table.objects.filter(DCU_id=dcu.id).count()
d = {
    'MU_count': MU_count, 'var7': var7,
}
return render(request, 'dcu_interval.html', d)

模型.py:

class dcu(models.Model):
id = models.AutoField(unique=True, editable=False, primary_key=True)
Asset = models.CharField(max_length=128)
IMEI_Number = models.CharField(max_length=128)

def __str__(self):
    return self.Asset

class Meter_Mapping_Table(models.Model):

mid = models.AutoField(unique=True, editable=False, primary_key=True)
Meter_id = models.CharField(
    max_length=128, help_text='(ID of the Meter table)')
MU_id = models.CharField(max_length=150)
DCU_id = models.CharField(max_length=150, null=True, blank=False)

def __str__(self):
    return self.Meter_id

如何根據提交的另一個表過濾數據?

我需要根據 DCU 表 id 字段 DCU_id =1 過濾 DCU_id; DCU.id=1; 答案:MU_count=1 像這樣我需要過濾並顯示該計數

您可以使用:

Meter_Mapping_Table.objects.filter(DCU_id='1').count()

雖然這是答案,但您需要真正考慮您的數據庫設計並利用ForeignKey關系。 不推薦使用外鍵作為CharField

我建議如下:

改變:

DCU_id = models.CharField(max_length=150, null=True, blank=False)

到:

DCU = models.ForeignKey(dcu, null=True, blank=False)

然后你可以這樣查詢:

Meter_Mapping_Table.objects.filter(DCU=1).count()

注意:還要考慮遵循Django 的模型命名約定 因為這將有助於其他開發人員的可讀性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM