从Django中的多个表中获取数据 [英] Fetching data from multiple tables in Django
本文介绍了从Django中的多个表中获取数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何执行联接查询?我想触发类似的查询:
How to perform a join query? I want to fire query which act like:
select s.nm,s1.sub from Student s,Subject s1
在这里,我展示了我在Django中尝试过的方法,但是没有用:
Here I show what I tried in Django but doesn't work:
我的model.py文件是
My model.py file is
from django.db import models
class Student(models.Model):
sid = models.BigIntegerField(primary_key=True)
nm = models.CharField(max_length=20, blank=True, null=True)
id = models.ForeignKey('Subject', models.DO_NOTHING, db_column='id', blank=True, null=True)
class Meta:
managed = False
db_table = 'student'
class Subject(models.Model):
id = models.IntegerField(primary_key=True) # AutoField?
sub = models.CharField(max_length=30, blank=True, null=True)
class Meta:
managed = False
db_table = 'subject'
view.py
from django.http.response import HttpResponse
from django.core import serializers
from App.models import Student, Subject
# Create your views here.
def fun(request):
# obj1=Subject.objects.all()
obj=Student.objects.filter(Subject.objects.all()).all()
js=serializers.serialize("json",obj)
return HttpResponse(js)
但它不起作用.
推荐答案
you should use related_name attribute in model, and you can access the object this way.
models.py
models.py
class Student(models.Model):
sid = models.BigIntegerField(primary_key=True)
nm = models.CharField(max_length=20, blank=True, null=True)
subject = models.ForeignKey("Subject", related_name="student", blank=True, null=True)
class Subject(models.Model):
sub = models.CharField(max_length=30, blank=True, null=True)
views.py
from App.models import Student, Subject
def myFunc():
students = Student.objects.all()
for student in students:
subj = student.subject.sub
def myFunc2():
subjects = Subject.objects.all()
for subject in subjects:
student_name = subject.student.nm
这篇关于从Django中的多个表中获取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文