複数の ManyToManyFields を使用するプロジェクトに取り組んでいますが、この時点で、接続が作成されたときのタイムスタンプなど、ManyToManyField にいくつかの追加の値 (ほとんどが自動的に設定されます) を保存する必要があることに気付きました。models.ManyToManyField
これを試して、への参照をカスタムに置き換えました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
)
;
date_registered
extended で定義したフィールドは考慮されませんCustomManyToManyField
。なぜだめですか?