[英]I want to get result of two query data using ORM in django
我想在 Django 中使用 ORM 獲取兩個查詢數據的結果,但只顯示一個數據。 我該如何解決這個問題?
我的代碼:
視圖.py
def home(request):
codes, descrp = Major.objects.raw('SELECT p.major_cd, m.description FROM percentages p, major m WHERE p.major_cd = m.major_cd;')
context = {
"codes": codes,
"descrp": descrp
}
return render(request, "website/index.html" , context )
索引.html
<select class="form-control select2">
<option>Select Major Head</option>
{% for cd, ds in codes, descrp %}
<option> {{ cd, ds }} </option>
{% endfor %}
</select>
楷模
class Major(models.Model):
major_cd = models.IntegerField(primary_key=True)
description = models.CharField(max_length=100, blank=True, null=True)
class Meta:
managed = False
db_table = 'major'
class Percentages(models.Model):
major_cd = models.IntegerField(primary_key=True)
percentage = models.CharField(max_length=5, blank=True, null=True)
class Meta:
managed = False
db_table = 'percentages'
我想根據百分比表中的“major_cd”過濾掉主表中的“major_cd”。
預期結果:列 = Major_cd 的數據,來自主要表的描述
在我看來,將模型重寫為ForeignKey
可能會更好,這使得在 Django 中查詢更加方便:
class Major(models.Model):
major_cd = models.IntegerField(primary_key=True)
description = models.CharField(max_length=100, blank=True, null=True)
class Meta:
managed = False
db_table = 'major'
class Percentages(models.Model):
major_cd = models.OneToOneField(
Major,
on_delete=models.CASCADE,
primary_key=True,
db_column='major_cd'
)
percentage = models.CharField(max_length=5, blank=True, null=True)
class Meta:
managed = False
db_table = 'percentages'
完成后,我們可以查詢:
def home(request):
majors = Major.objects.filter(percentage__isnull=False)
context = {
'majors': majors
}
return render(request, 'website/index.html', context)
在模板中,我們可以使用以下方法渲染它:
<select class="form-control select2">
<option>Select Major Head</option>
{% for major in majors %}
<option>{{ major.pk }}: {{ major.description }}</option>
{% endfor %}
</select>
您可以使用 Q,從 django.db.models 導入 Q。
例如,您可以將其設置為 .. descrp = Major.objects.filter(Q(major_cd=.major_cd) & Q(m_description=m.description))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.