1
我GOOGLE上和,我只是似乎沒有得到它。在Django基本關係(建立在傳統的DB之上)
我如何重新在Django簡單的連接查詢?
在models.py(Fylker是縣,Dagensrepresentanter是人)
class Fylker(models.Model):
id = models.CharField(max_length=6, primary_key=True)
navn = models.CharField(max_length=300)
def __unicode__(self):
return self.navn
class Meta:
db_table = u'fylker'
class Dagensrepresentanter(models.Model):
id = models.CharField(max_length=33, primary_key=True)
etternavn = models.CharField(max_length=300, blank=True)
fornavn = models.CharField(max_length=300, blank=True)
fylke = models.ForeignKey(Fylker, db_column='id')
def __unicode__(self):
return u'%s %s' % (self.fornavn, self.etternavn)
class Meta:
ordering = ['etternavn'] # sette default ordering
db_table = u'dagensrepresentanter'
由於模型是自動創建的Django的,我已經加入了ForeignKey的,並試圖將它連接到縣。 ID字段是從我試圖集成到這個Django項目的數據庫繼承。
通過查詢
Dagensrepresentanter.objects.all()
我得到的所有的人,但沒有自己的縣城。 通過查詢
Dagensrepresentanter.objects.all().select_related()
我得到Dagensrepresentanter.id和Fylker.id聯接,但我想泰德加入到上Fylke的,又名
SELECT * FROM dagensrepresentanter d , fylker f WHERE d.fylke = f.id
這樣我能得到縣名(Fylke navn)與所有人都有相同的結果集。
附加請求: 我已經閱讀了django文檔和相當多的問題,這裏在stackoverflow,但我似乎無法得到我的頭圍繞這個ORM的東西。這是受到質疑的問題。你有什麼好的資源(相關博客文章與經驗/解釋等)人們習慣認爲的數據庫爲SQL-的事情,需要開始在Django ORM思維?
您是否使用過['./manage.py inspectdb'](https://docs.djangoproject.com/en/dev/ref/django-admin/#inspectdb)? - 它可以幫助你處理遺留數據庫。 – Tadeck
./manage.py inspectdb顯示我的models.py文件的起點。 e.g的'Fylke的= models.ForeignKey(Fylker,db_column = 'ID')從我的當前models.py'表示爲'Fylke的= models.CharField(MAX_LENGTH = 6,空白=真)'。我從中學到了什麼?那Django沒有注意到我改變了models.py?要麼? – Eiriks
@Eriks:你真的想達到什麼目的?你希望你的數據庫能夠遵循模型的變化嗎?使用南。你想要基於你在數據庫中擁有的模型嗎?使用'inspectdb'。你是否想根據模型從頭創建數據庫?定義模型並使用'syncdb'。我不知道問題在哪裏。如果你想學習ORM,有很多教程,ORM只是數據庫頂層的一個抽象層(Object-Relational Mapper是相當具有描述性的名字)。 – Tadeck