Django 递归关系
我的 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
My DjangoApp is using categories to generate a navigation and to put stuff in those categories.
There are two types of categories:
- ParentCategories (top categories)
- ChildCategories (sub categories that have a ParentCategory as a parent)
Because those to categories are so similar I don't want to use two different models.
This is my category model:
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)
In my djangoadmin the parent won't be represented.
If I use python manage.py sql I get:
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
)
;
So the parent relationship won't even be created.
Is there a handy way of fixing this?
I know I could just alter the table but I'm flushing/deleting the database quite a lot because the app changes rapidly and I don't want to alter the table everytime manually.
btw: my dev db is of course sqlite3.
On the server we'll use postgresql
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
还有其他事情发生 -
parent
的定义很好。如果我在复制粘贴了该模型的应用程序上运行manage.py sql
,我会得到:Something else is going on - that definition of
parent
is fine. If I runmanage.py sql
on an app with that model copy-pasted in, I get: