从Django中的多个表中获取数据 [英] Fetching data from multiple tables in Django

查看:50
本文介绍了从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆