通过创建模型类的自定义元类,更改内部元类的 db_table 属性
其中name是model类名,可以使用驼峰转下划线去定义,更符合命名标准
代码如下:
class ModelCustomName(ModelBase):
def __new__(mcs, name, bases, attrs, **kwargs):
table_name = f't_da_{name}'
if not attrs.get('Meta', None):
attrs['Meta'] = type("Meta", (), dict(db_table=table_name))
abstract = getattr(attrs["Meta"], 'abstract', False)
if not hasattr(attrs["Meta"], 'db_table') and not abstract:
setattr(attrs['Meta'], 'db_table', table_name)
return super().__new__(mcs, name, bases, attrs, **kwargs)
class BaseModel(models.Model, metaclass=ModelCustomName):
id = models.BigAutoField(primary_key=True, verbose_name="ID")
objects = models.Manager()
class Meta:
abstract = True
然后继承BaseModel就行
代码如下:
class Person(BaseModel):
name = models.CharField(max_length=64, verbose_name="姓名", db_column='person_name')
是不是感觉方便了很多
当然如果你觉得有些命名需要改一下
class Person(BaseModel):
name = models.CharField(max_length=64, verbose_name="姓名", db_column='person_name')
class Meta:
db_table = 'person'
这样也是可以的
该文 如有缺陷及不足的地方,欢迎大家提出并纠正
class redis_data(models.Model): class Meta: db_table='redis_data' key=models.CharField(max_length=128) value=models.CharField(max_length=128)
转载于:https://www.cnblogs.com/biboxie/p/...
首先,利用django内置的分页功能,写分页类:
from django.core.paginator import Paginator, Page # 导入django分页模块
class PageInfo(object):
def __init__(self, current_page, all_count, base_url, per_page
在利用django连接数据库开发时,django 自动生成的表名是 app 名和 model 名的组合,但这往往不是我们想要的,自定义 db_table 属性就行了
class Student(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=...
Django中的数据表命名: 应用名小写_模型类名小写
这就造成一旦应用名发生了改变后,数据表的名字就会发生改变
所以在django中可以指定表明,无论应用名发生什么改变都不会影响数据表的命名
这称之为元选项 :
只需要在模型类中定义一个元类Meta,在里面添加属性db_table就可以指定表名。
# 创建书籍类
class Book(models.Model)...
问题描述,在admin界面中,管理表时希望将表名显示为中文,或者为自己希望的名字
如图,图中的所有表名,均为创建时的名字末尾再加s的形式,在这里我希望变成中文,例如tags 显示为“标签”
解决方法:
在models.py中对应的类下,添加
class Tag(models.Model):
class Meta:
#末尾不加s
verbose...
2 ip_address = models.CharField(max_length=16)
4 #host = models.ForeignKey(Host) 注意此行,添加的是外键查询
6 n...
可以使用 Django 的迁移工具来修改数据库表字段。首先,在 models.py 文件中修改对应的字段,然后运行以下命令:
python manage.py makemigrations
这将生成一个迁移文件,描述了如何修改数据库表。接下来,运行以下命令:
python manage.py migrate
这将应用迁移文件,修改数据库表字段。注意,如果已经有数据在该表中,修改字段可能会导致数据丢失或无法转换,因此请谨慎操作。