Erweitern Django ' s ManyToManyField mit benutzerdefinierten Feldern

Arbeite ich an einem Projekt mit mehreren ManyToManyFields, doch an diesem Punkt merke ich, dass ich will, dass die ManyToManyField zu speichern, einige zusätzliche Werte (meist automatisch gesetzt), wie ein Zeitstempel, Wann die Verbindung erstellt wurde. Ich habe versucht, und ersetzt den Verweis auf models.ManyToManyField mit meinem custom ManyToManyField

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

Dann meine Modelle:

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


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

Allerdings läuft python manage.py sql testapp gibt die folgende 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
)
;

Es nicht berücksichtigt, die date_registered Bereich definierte ich in der erweiterten CustomManyToManyField. Warum nicht?

InformationsquelleAutor ponycat | 2013-08-02
Schreibe einen Kommentar