Django: abstract Model und Feld Eigenschaften ändern...

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Habe das selbe Problem was hier beschrieben wird: http://stackoverflow.com/questions/1940 ... ited-field

Ich würde auch gern Eigenschaften eines geerbten Model-Field im Nachhinein anpassen (z.B. db_column, help_text u.s.w.)

Ich finde keinen Weg das zu tun. Man kann leider nicht einfach ein Feld aus der geerbten "abstract Model" überschreiben, wie z.B.:

Code: Alles auswählen

class MyBaseModel(models.Model):
    name = models.CharField(max_length=100)

    class Meta:
        abstract = True

class MyModel(MyBaseModel):
    name = models.CharField(max_length=100, db_column="bar")
das steht auch in der Doku: http://docs.djangoproject.com/en/dev/to ... -permitted

Jemand eine Idee?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Das geht halt einfach nicht. Stell dir mal vor, was das für ein Chaos wäre, wenn du da jetzt diese Multi-Table-Inheritance verwenden würdest... dann müsste man mehrere Super-Models haben mit den verschiedenen z.B. Maximallängen usw. Das würde total kompliziert.

Wie wäre es mit Mixins? Muss man dann halt bei allen Submodels explizit reinmixen, aber sollte afaik funktionieren... Oder du machst ein bisschen Metaklassengezauber das automatisch das Mixin reinwurschtelt sollte ein bestimmtes anderes Mixin nicht angegeben sein. (Ist es imho aber nicht wert.)
Antworten