2

我的 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

4

1 回答 1

3

其他事情正在发生 - 的定义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;
于 2009-11-06T11:49:35.917 回答