django - 为什么 Django 在遗留数据库的表名中添加一个额外的字符?
问题描述
我正在关注this_site以加入旧数据库。但是,无论使用哪种方法,Django 都会向遗留 sqlite 数据库中的唯一表(表:Dogs)添加一个额外的字符(一个 s)。
额外字符的截图如下:
下面是我的整个models.py。
通过python的sqlite库访问数据库我可以查询表'dogs'并获得预期的结果,因为查询'dogss'会产生错误“没有这样的表:dogss”。
from django.db import models
from datetime import datetime
# Create your models here.
class Tutorial(models.Model):
tutorial_title = models.CharField(max_length=200)
tutorial_content = models.TextField()
tutorial_published = models.DateTimeField('date published', default=datetime.now())
def __str__(self):
return self.tutorial_title
class Dogs(models.Model):
#id = models.AutoField(primary_key=True)
date_of_death = models.TextField(db_column='Date of Death', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
land_of_birth = models.TextField(db_column='Land of Birth', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
registered_name = models.TextField(db_column='Registered Name', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
call_name = models.TextField(db_column='Call Name', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
breeder_name = models.TextField(db_column='Breeder_name', blank=True, null=True) # Field name made lowercase.
registration_field = models.TextField(db_column='Registration#', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters. Field renamed because it ended with '_'.
land_of_standing = models.TextField(db_column='Land of Standing', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
dam = models.TextField(db_column='Dam', blank=True, null=True) # Field name made lowercase.
known_offspring = models.TextField(db_column='Known Offspring', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
colour = models.TextField(db_column='Colour', blank=True, null=True) # Field name made lowercase.
breeder = models.TextField(db_column='Breeder', blank=True, null=True) # Field name made lowercase.
kennel = models.TextField(db_column='Kennel', blank=True, null=True) # Field name made lowercase.
owner_name = models.TextField(db_column='Owner_name', blank=True, null=True) # Field name made lowercase.
weight = models.TextField(db_column='Weight', blank=True, null=True) # Field name made lowercase.
sire = models.TextField(db_column='Sire', blank=True, null=True) # Field name made lowercase.
did = models.IntegerField(blank=True, null=True)
sex = models.TextField(db_column='Sex', blank=True, null=True) # Field name made lowercase.
titles = models.TextField(db_column='Titles', blank=True, null=True) # Field name made lowercase.
date_of_birth = models.DateTimeField(db_column='Date of Birth', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
owner = models.TextField(db_column='Owner', blank=True, null=True) # Field name made lowercase.
distinguishing_features = models.TextField(db_column='Distinguishing Features', blank=True, null=True) # Field name made lowercase. Field renamed to remove unsuitable characters.
size = models.TextField(db_column='Size', blank=True, null=True) # Field name made lowercase.
def __str__(self):
return self.registered_name
class Meta:
managed = False
db_table = 'dogs'
app_label = 'dogs'
解决方案
这是 Django 中的默认显示,没有指定 a verbose_name_plural
,您可以在此处获得文档https://docs.djangoproject.com/en/3.0/ref/models/options/
使用单数名称命名表是标准做法,因此默认情况下 Django 添加一个s
以显示表中存在的项目列表。以下是有关此主题的讨论:表命名困境:单数与复数名称
(在Tutorial
表格的情况下,您可能也tutorials
显示过)
推荐阅读
- python - 带有数字的 BERT(来自 Transformers 的双向编码器表示)
- java - 如果一个对象遇到唯一约束,Java Spring Jpa saveAll 方法将失败
- python-3.x - 如何将字符串的元素转换为包格式(例如:'123-56.2' -> b'\x01\x02\x03\x0-...'
- reactjs - 如何获取 axios.get 数据以及将其置于 redux reducer 初始状态的位置
- javascript - 如何在外部 .js 文件中运行 Google 跟踪代码管理器脚本?
- node.js - 在 mongodb (Node.js) 中更新子文档
- java - 替换不推荐使用的 Java 方法
- azure-devops - Github Error while syncing Git history: Unexpected character ('<' (code 60)): expected a valid value Databrick integration error
- mysql - 如何从同一表SQL中另一列的前一行中的值中减去一列中的一个值
- c++ - 图标编辑器中的自定义颜色(VS 2015)