具體用法,在Django項目下
python manage.py inspecdb tablename
目標
在Django中,我們通過models.py來創建新的數據庫表。
但是往往有時候,我們需要利用到之前的已經設計好的數據庫,數據庫中提供了設計好的多種表單。那么這時如果我們再通過models.py再來設計就會浪費很多的時間。所幸Django為我們提供了inspecdb的方法。他的作用即使根據已經存在對的mysql數據庫表來反向映射結構到models.py中.
示例
生成App,并加入setting
python manage.py startapp car
數據庫已存在car表格
python manage.py inspecdb car
生成一個model的示例
from django.db import models
class Car(models.Model):
id = models.IntegerField(blank=True, null=True)
datetime = models.DateTimeField()
car_number = models.CharField(max_length=20)
totle_mile = models.IntegerField(blank=True, null=True)
month_mile = models.IntegerField(blank=True, null=True)
qiyou = models.IntegerField(blank=True, null=True)
caiyou = models.IntegerField(blank=True, null=True)
qiyou_cost = models.IntegerField(blank=True, null=True)
caiyou_cost = models.IntegerField(blank=True, null=True)
fix_cost = models.IntegerField(blank=True, null=True)
class Meta:
managed = False
db_table = 'car'
將以上內容復制到car/model 下 并進行修改完善
from django.db import models
class Car(models.Model):
datetime = models.DateField(verbose_name='日期')
car_number = models.CharField(max_length=20,verbose_name='車牌號')
totle_mile = models.FloatField(blank=True, null=True,verbose_name='總里程')
month_mile = models.FloatField(blank=True, null=True,verbose_name='當月里程')
qiyou = models.FloatField(blank=True, null=True,verbose_name='汽油用量')
caiyou = models.FloatField(blank=True, null=True,verbose_name='柴油用量')
qiyou_cost = models.FloatField(blank=True, null=True,verbose_name='汽油金額')
caiyou_cost = models.FloatField(blank=True, null=True,verbose_name='柴油金額')
fix_cost = models.FloatField(blank=True, null=True,verbose_name='維修費用')
class Meta:
managed = False
db_table = 'car'
verbose_name = '車輛能耗管理'
verbose_name_plural = verbose_name
def __str__(self):
return self.car_number
運行
python manage.py makemigrations car
python manage.py migrate car