如何创建一个连接到现有MySQL表的Django REST框架API,而不是通过modela.py
创建它们。我的models.py
显示如下内容:
class Author(models.Model):
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
def __str__(self):
return f'{self.first_name} {self.last_name}'
取而代之的是,我需要直接从 MySQL 中的现有表中获取数据。
您需要使用元字符字段定义与表名相同的类名
比如 RandomTable(id INT(10),name varchar(10))
您现有的 mysql 表,那么它的models.py
将是
class AppnameRandomTable(models.Model)
id = models.CharField(db_column="id") #name of column of existing db
在其中,您需要在元部分中写入现有表名的字段
class Meta:
db_table = "RandomTable" #your existing mysql table name
节省时间的黑客只需在 models.py 中创建一个类,并在终端运行"Python manage.py InspectDB"时,您将自动从那里获取所有列名。
你可以从那里复制和粘贴名称,因为为了读取和写入列,你需要在你的类中定义它们的变量,即使表是现有的mysql表。
python manage.py inspectdb > models.py
如果运行该命令,它将在项目的根目录中创建一个 models.py。完成此操作后,您可以将其直接移动到项目中,也可以创建一个模型文件夹,并从那里将其分解为关注区域。您可能必须将related_name = 'foo'
添加到与其他模型有关系的许多字段中。这可能很耗时,但它有效。