python - 如何从一张表映射到django模型?

标签 python mysql django

我正在处理一些“遗留”代码并处理一个问题。我有一些 mysql 模式,其中有两个表(这是简化的,这里有更多的东西):

article
+------+-------------+-------+------+
| id   | author      | title | year |
+------+-------------+-------+------+
|    1 | author_name | title | 1999 |
+------+-------------+-------+------+

article_pages
+------+------------+----------+
| id   | pages_from | pages_to |
+------+------------+----------+
|    1 |         10 |       15 |
+------+------------+----------+

article 和article_pages 的django 模型看起来非常明显:

class Article(models.Model):
    id = models.IntegerField()
    author = models.CharField(max_length=256)
    name = models.CharField(max_length = 256)
    year = models.IntegerField()

class ArticlePages(models.Model):
    id = models.IntegerField()
    page_from = models.IntegerField()
    page_to = models.IntegerField()

现在在我的 View 中,我需要按页对文章进行排序:

articles = Article.objects.filter(name=current_name_to_filter).order_by('page_from')

我知道 ArticleArticlePages 之间需要存在 OneToOneFiled 关系,但我不太确定如何实现它。

我正在尝试:pages_from = OneToOneField(ArticlePages.page_from, related_name = 'id')。我很了解 python,但我对 Django 很陌生。在我看来,这种方法非常明显,但行不通。我知道需要对数据库进行一些更改,但是调用 python manange.pysyncdb 没有效果。 两个表中的 id 列是它们之间的标识符。 article中的idarticle_pages一一对应。

我需要使用:mysqldjangon=1.5.2

最佳答案

您需要使用ForeignKey指向模型,如 OneToOneField是具有unique=True 约束的ForeignKey。但你试图指向确切的 id (这是整数)。但这不是Thinks在SQL中的工作方式(当然还有mysql)。

需要什么:

  1. 删除显式定义的 id 字段。您的型号都有 primary key名称为“id”的整数字段。将创建完全相同的字段 automatically by django ,如果没有定义其他主键字段。

  2. 使用 OneToOneField 时,指向您正在引用的模型类。

最终结果:

class Article(models.Model):
    author = models.CharField(max_length=256)
    name = models.CharField(max_length = 256)
    year = models.IntegerField()

class ArticlePages(models.Model):
    page_from = models.OneToOneField(Article)
    page_to = models.OneToOneField(Article)

关于python - 如何从一张表映射到django模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26501243/

相关文章:

Django按属性子类过滤查询集

python - 如何使用小批量代替 SGD

python - 在创建自定义层时,当在 Keras 中调用构建方法时

python - Boto3:配置文件位置

python - Django 管理站点丢失了所有格式

php - 使用 SQL (mysql) 将一个子查询的结果附加到另一个子查询的结果

mysql - JDBC 无法与 jdbc 建立连接 :mysql://

php - 为什么我的数据库表没有得到更新

python - View 或模板中的查询集

python - django POST 数据不工作