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