【问题标题】:django recursive relationshipsdjango递归关系
【发布时间】:2009-11-06 11:39:27
【问题描述】:

我的 DjangoApp 正在使用类别来生成导航并将内容放入这些类别中。

有两种类型的类别:

  • ParentCategories(顶级类别)
  • ChildCategories(以 ParentCategory 作为父类的子类别)

因为类别非常相似,所以我不想使用两种不同的模型。 这是我的类别模型:

class Category(models.Model):
    name = models.CharField(max_length=60)
    slug = models.SlugField(max_length=80, blank=True)
    is_parent = models.BooleanField()
    parent = models.ForeignKey('self', null=True, blank=True)

在我的 djangoadmin 中,不会代表父级。 如果我使用 python manage.py sql 我得到:

CREATE TABLE "catalog_category" (
    "id" integer NOT NULL PRIMARY KEY,
    "name" varchar(60) NOT NULL,
    "slug" varchar(80) NOT NULL,
    "is_parent" bool NOT NULL
)
;

因此甚至不会创建父关系。

有没有方便的方法来解决这个问题?

我知道我可以只更改表,但我经常刷新/删除数据库,因为应用程序更改很快,我不想每次都手动更改表。

顺便说一句:我的开发数据库当然是 sqlite3。 在服务器上我们将使用 postgresql

【问题讨论】:

  • 你运行的是什么版本的 Django?

标签: django recursion relationships


【解决方案1】:

其他事情正在发生 - parent 的定义很好。如果我在复制粘贴了该模型的应用程序上运行 manage.py sql,我会得到:

BEGIN;
CREATE TABLE "bar_category" (
    "id" integer NOT NULL PRIMARY KEY,
    "name" varchar(60) NOT NULL,
    "slug" varchar(80) NOT NULL,
    "is_parent" bool NOT NULL,
    "parent_id" integer
)
;
COMMIT;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-31
    • 2013-08-04
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2020-11-09
    • 2019-10-18
    • 2014-12-26
    相关资源
    最近更新 更多