Django模型中未定义的数据库表
在models.py里不定义表的结构可以吗?我的意思是我们正在使用
cursor.execute('某个查询')
所以不写像下面这样的代码也没关系吧:
def tblNew(models.Model)
col1 = models.CharField(max_length=2)
谢谢你的指导,我是Django的新手。
1 个回答
1
你可以直接在PostgreSQL中创建数据库表,但之后你需要创建models.py文件,否则会错过很多东西。如果你已经有了现成的数据库,那么可以使用django-admin.py命令来帮你处理这些事情(https://docs.djangoproject.com/en/dev/ref/django-admin/#inspectdb)。
- ORM(对象关系映射)。这让很多事情变得简单。你在视图中写SQL代码?这有什么好处呢?如果完全不使用ORM,你就会发现这样做的麻烦。而我在某些视图中确实有SQL代码,但那是因为Django缺少一些功能,比如特定语言的排序。不过,通常在视图中写SQL会让代码难以阅读。
- 你不能使用数据库迁移。South(http://south.aeracode.org/)是一个很棒的项目,大多数大型Django项目都在用。事实上,我认为它在一些应用投票中是使用最广泛的Django项目。Django 1.7也会提供迁移功能,但你需要在models.py中声明模型。如果不使用数据库迁移,你会失去理智。我不是夸张,跟踪开发和上线服务器中的数据库变化会变得非常麻烦。
- 而且在某些地方不使用Django的ORM(不声明模型)也有点奇怪,因为你肯定会在其他地方使用Django的模型和ORM——难道你也会停止使用Django的认证、会话和网站逻辑吗?这些都在使用Django的ORM……