Django 根據數據庫自動生成模型

具體用法,在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
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。