2017-05-27 41 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}) 

此代碼運行正常。現在Django的模擬SQL「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

當您使用SQL中的Django ORM停止思考。在您的情況下,您可以通過ForeignKey的反向關係訪問學生的電話記錄。默認名稱應該是'phone_set'。 –

回答

0

需要學生FIO和學生Phone.Phone,

你可以做這樣的事情,

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