2013-08-02 21 views
0

我正在使用多個ManyToManyFields的項目,但是,在這一點上,我意識到我想ManyToManyField存儲一些額外的值(主要是自動設置),如時間戳連接已創建。我想這一點,與我的自定義更換參考models.ManyToManyFieldManyToManyField用自定義字段擴展Django的ManyToManyField

class CustomManyToManyField(models.ManyToManyField): 
    date_registered = models.DateTimeField(auto_now=True) 

然後我的模型:

class A(models.Model): 
    name = models.CharField(max_length=32) 


class B(models.Model): 
    m2m = CustomManyToManyField(A) 
    name = models.CharField(max_length=32) 

但是,在運行python manage.py sql testapp返回以下SQL:

BEGIN; 
CREATE TABLE "testapp_a" (
    "id" integer NOT NULL PRIMARY KEY, 
    "name" varchar(32) NOT NULL 
) 
; 
CREATE TABLE "testapp_b_m2m" (
    "id" integer NOT NULL PRIMARY KEY, 
    "b_id" integer NOT NULL, 
    "a_id" integer NOT NULL REFERENCES "testapp_a" ("id"), 
    UNIQUE ("b_id", "a_id") 
) 
; 
CREATE TABLE "testapp_b" (
    "id" integer NOT NULL PRIMARY KEY, 
    "name" varchar(32) NOT NULL 
) 
; 

它沒有考慮到我在擴展CustomManyToManyField中定義的date_registered字段。爲什麼不?

回答

4

這不是正確的做法。請參閱Django文檔中的Extra fields on many-to-many relationships

此外,您創建的CustomManyToManyField是一個自定義字段,而不是一個模型,因此它不能包含字段。

+0

謝謝。發佈我的問題後,我立即找到了該頁面。我的腦袋放屁很大。 – ponycat