2009-11-06 91 views
2

我的DjangoApp使用類別來生成導航並將東西放入這些類別中。Django遞歸關係

有兩種類型的類別:

  • 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 
) 
; 

所以父母的關係甚至不會被創建。

有沒有一個方便的方法來解決這個問題?

我知道我可以改變表格,但我正在刷新/刪除數據庫相當多,因爲應用程序變化很快,我不想每次手動更改表格。

btw:我的開發數據庫當然是sqlite3。 在服務器上,我們將使用postgresql

+0

您運行的是什麼版本的Django的? – 2009-11-06 11:51:03

回答

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;