2
我目前想運行一條SQL語句,它將過濾我的數據庫,但它訪問多個表。從我在本網站上閱讀的其他例子中,他們都使用不在主鍵上的外鍵;不過,這是我目前的設置。我有兩個問題,第一個是SQL過濾器。這些是我的型號:Django:使用模型查詢多個表
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True);
isATutor = models.BooleanField();
timeAvailable = models.CharField(max_length=3);
class TutorProfile(models.Model):
user = models.ForeignKey(User);
language = models.CharField(max_length=30);
unique_together = (("user", "language"),);
class Tutor(models.Model):
user = models.ForeignKey(User);
subject = models.CharField(max_length=30);
unique_together = (("user", "subject"),);
我現在正在使用原始SQL。
def sqlQuery(avail, lang, sub):
from django.db import connection, transaction
cursor = connection.cursor();
cursor.execute("SELECT a.first_name, a.last_name, a.email FROM auth_user a, books_tutor b, books_tutorprofile c, books_userprofile d WHERE a.id = b.user_id AND a.id = c.user_id AND a.id = d.user_id AND b.subject=%s AND c.language=%s AND d.timeAvailable=%s", [sub, lang, avail]);
row = cursor.fetchall();
return row;
timeAvailable正在三個字符串的形式是「MAE」,其中M =上午,A =下午,E =晚上,如果不需要他們,我們會更換 - 例如'M--'只在早上提供。
所以第一個問題是我很想能夠保持上述SQL作爲Django模型。第二個問題是我需要一個查詢MAE的好方法。我想我可能不得不做8個不同的SQL部分和UNION他們取決於選擇什麼。
感謝,
史蒂夫
這很酷。問題:有什麼方法可以繼續執行用戶和主題/語言的獨特性?我從來沒有使用子類,並會閱讀更多關於它。我非常感謝答覆。 – user511622 2010-11-18 06:11:46
當然。編輯原創以包含唯一性 – Thomas 2010-11-18 06:51:16
欲瞭解更多信息,請參閱:http://docs.djangoproject.com/zh/dev/topics/db/models/#multi-table-inheritance。另外,不要忘記標記接受的答案;) – Thomas 2010-11-18 07:02:33