2017-05-27 8 views
0
#models.py 
# 
class Students(models.Model): 
    StudentID = models.IntegerField(primary_key=True) 
    FIO = models.CharField(max_length=50) 
    StudGroup = models.CharField(max_length=10) 
    NYear = models.IntegerField() 

class Phone(models.Model): 
    Code = models.AutoField(primary_key=True) 
    StudentID = models.ForeignKey(Students) 
    Phone = models.BigIntegerField() 


#views.py 
# 
def show_all(reqest): 
all_students = Students.objects.all() 
return render_to_response('demosite/index.html', 
     {'All_students': all_students}) 

このコードは正常に動作しています。SQLのDjangoのアナログ「INNER DJOIN」

SELECT * FROM Students 

をしかし、変数all_studentsは、2つのテーブルからのデータが含まれている必要があります。

今、私の見解では、この要求を返します。

がどのように私はこの要求を実行するためのDjangoを得るのです:

SELECT Students.FIO, Phone.Phone FROM Students INNER DJOIN Phone ON Students.StudentID = Phone.StudentID 
+0

とき、あなたはこのような何かを行うことができ

、学生の学生FIOとPhone.Phoneを必要としますあなたはDjango ORMがSQLで考えることをやめて作業します。あなたのケースでは、ForeignKeyの逆の関係を介して学生の電話記録にアクセスすることができます。デフォルトの名前は 'phone_set'でなければなりません。 –

答えて

0

あなたは

Phone.objects.values('Phone', 'StudentID__FIO')