加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 数据库 > MySql > 正文

python – 使用Django的数据库表名

发布时间:2021-01-12 04:12:58 所属栏目:MySql 来源:互联网
导读:我已经有一个名为“mydb”的数据库,我有一个名为“AERODROME”的表.我的models.py看起来像这样:from django.db import models class Aerodrome(models.Model): Name = models.CharField(max_length=48) Latitude = mode

我已经有一个名为“mydb”的数据库,我有一个名为“AERODROME”的表.

我的models.py看起来像这样:

from django.db import models

class Aerodrome(models.Model):
    Name = models.CharField(max_length=48)
    Latitude = models.DecimalField(decimal_places=4,max_digits=7)
    Longitude = models.DecimalField(decimal_places=4,max_digits=7)

我在views.py上有这个方法:

from django.shortcuts import render
from helloworld.models import Aerodrome

def aerodromes(request):
    return render(request,'aerodromes.html',{'aerodromes': Aerodrome.objects.all()})

在我的模板文件夹中,我有aerodromes.html,这也很简单:

当我通过我的浏览器测试时,我收到一个错误,因为它看起来像是用错误的名称访问该表.我的应用程序被称为“helloworld”,因为它是一个测试,而不是访问mydb.AERODROMES,它访问mydb.helloworld_aerodrome(还要注意区分大小写的问题).

由于我已经填充了数据库,我没有运行syncdb(我知道这不是必要的,但也许这就是问题).

所以,问题是我不知道为什么它会在表名中添加“helloworld_”,而且我仍然不确定我在哪里修正表名(并且从那里开始出现区分大小写)有“机场”而不是“AERODROMES”的问题.

这里有什么帮助?

最佳答案 在models.py模型定义中使用Meta类(documentation here):

class Aerodrome(models.Model):
    Name = models.CharField(max_length=48)
    Latitude = models.DecimalField(decimal_places=4,max_digits=7)

    class Meta:
        db_table = 'AERODROMES'

这将覆盖SQL数据库中模型表的默认命名方案.

您还可以添加托管属性来控制是否python manage.py syncdb和python manage.py flush管理表.

class Aerodrome(models.Model):
    # ...

    class Meta:
        db_table = 'AERODROMES'
        managed = False

有了这个,你可以syncdb而不用担心擦除你的数据.

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读