2015-07-01 2 views
0

У меня возникла проблема с объединением данных из двух таблиц.Django ORM Присоединиться к заявлению

Моя модель выглядит следующим образом:

class Student(models.Model): 
    name = models.CharField(max_length=50) 
    surname = models.CharField(max_length=50) 
    sex = models.CharField(max_length=10, choices=SEX_CHOICES) 
    kod_baka = models.CharField(max_length=20) 
    school_class = models.ForeignKey(School_class) 
    rfid = models.CharField(max_length=20, null=True) 

class User_account_student(models.Model): 
    kod_baka = models.CharField(max_length=20) 
    login = models.CharField(max_length=50, null=True, editable=False) 
    default_passwd = models.CharField(max_length=50, null=True) 

Что мне нужно сделать, это выбрать данные из этих двух таблиц вместе, соединенные колонки kod_baka. SQL-запрос будет выглядеть так:

SELECT * 
FROM Student 
INNER JOIN User_account_student ON 
    Student.kod_baka = User_account_student.kod_baka` 

Все предложения? Благодарю.

+0

Вам также необходимо улучшить свою модель. Есть ли причина, по которой вы не используете Foreignkeys между «Student» и «User_account_student»? Это сделает его намного проще ... –

+0

Да, была причина, по которой я решил сделать это так, но я не могу больше это запомнить, это было давно. В любом случае, все, что мне нужно, это написать запрос, предоставленный в Django ORM – karlosss

+0

. Я решил его достаточно хорошо, используя запрос 'objects.raw()', но мой вопрос по-прежнему сохраняется: возможно ли это сделать через ORM? – karlosss

ответ

0
class Student(models.Model): 
    name = models.CharField(max_length=50) 
    surname = models.CharField(max_length=50) 
    sex = models.CharField(max_length=10, choices=SEX_CHOICES) 
    kod_baka = models.CharField(max_length=20) 
    school_class = models.ForeignKey(School_class) 
    rfid = models.CharField(max_length=20, null=True) 

class User_account_student(models.Model): 
    kod_baka = models.CharField(max_length=20) 
    login = models.CharField(max_length=50, null=True, editable=False) 
    default_passwd = models.CharField(max_length=50, null=True) 

class Membership(models.model): 
    student=models.ForeignKey(Student) 
    user_account_student=models.ForeignKey(User_account_student) 


s = Student.objects.get(....).kod_baka 
User_account_student.objects.filter(membership__student.kod_baka = s).distinct() 
+0

хорошая идея, спасибо – karlosss