【问题标题】:Is there a better way to create model while the database already have the table当数据库已经有表时,有没有更好的方法来创建模型
【发布时间】:2020-08-16 14:00:01
【问题描述】:

在我的 MySQL 数据库中,我已经有一个表 fo_dic

mysql> desc fo_dic;
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| name     | varchar(30) | YES  |     | NULL    |                |
| desc     | text        | YES  |     | NULL    |                |
| author   | varchar(20) | YES  |     | NULL    |                |
| priority | int(5)      | YES  |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

现在我想用 Django 创建 FoDic 模型 让 Django Rest Framework 对数据进行 ORM。

from django.db import models

class FoDic(models.Model):

    id = models.IntegerField()
    name = models.CharField()
    desc = models.TextField()
    author = models.CharField()
    priority = models.IntegerField()

    def __str__(self):
        return self.name
    def __unicode__(self):
        return self.name

我想知道这会不会在我同步数据库的时候产生迁移,那会不会有冲突? 有没有办法将模型创建为与 MySQL 表相同的结构?

【问题讨论】:

    标签: python mysql django django-rest-framework


    【解决方案1】:

    您可以将此属性添加到您的 Meta 类中

    Class Meta:
         managed=false
    

    添加这个你的模型类

    【讨论】:

      【解决方案2】:

      如果你已经有数据库设置,你可以从它自动生成模型:

      python manage.py inspectdb > models.py
      

      您无需担心迁移中与 this 的冲突,因为 Django 会自行创建。

      更多详情请参考this

      【讨论】:

      • 我应该将生成的models.py的内容剪切到我应用的models.py文件中吗?
      • 是的,你可以这样做。确保检查外键引用。因为对于 MySql 的某些版本,它可能无法按预期运行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多