django admin viele-zu-viele-zwischenmodelle mit through = und filter_horizontal

So sehen meine Modelle aus:

<code>class QuestionTagM2M(models.Model):
    tag = models.ForeignKey('Tag')
    question = models.ForeignKey('Question')
    date_added = models.DateTimeField(auto_now_add=True)

class Tag(models.Model):
    description = models.CharField(max_length=100, unique=True)

class Question(models.Model):
    tags = models.ManyToManyField(Tag, through=QuestionTagM2M, related_name='questions')
</code>

Ich wollte nur einen Zeitstempel hinzufügen, wenn eine bestimmte Anzahl von Beziehungen erstellt wurde. Das macht Sinn, erhöht aber auch die Komplexität. Abgesehen davon, dass die .add () -Funktionalität entfernt wurde (obwohl das einzige Feld, das ich wirklich hinzufüge, automatisch erstellt wurde, damit es technisch nicht mehr stören sollte). Aber damit kann ich leben, da es mir nichts ausmacht, das Extra zu tunQuestionTagM2M.objects.create(question=,tag=) Stattdessen, wenn dies bedeutet, dass Sie die zusätzliche Zeitstempelfunktionalität erhalten. Mein Problem ist, ich würde wirklich gerne in der Lage sein, meine zu bewahrenfilter_horizontal Javascript-Widget im Admin. Ich weiß, dass die Dokumentation sagt, dass ich stattdessen eine Inline verwenden kann, aber dies ist einfach zu unhandlich, da es keine zusätzlichen Felder gibt, die sich tatsächlich in der Inline befinden würden, abgesehen vom Fremdschlüssel für dieTag sowieso. Auch im größeren Schema meines Datenbankschemas ist myQuestion Objekte werden auf meiner Admin-Seite bereits als Inline angezeigt, und da Django [noch] keine verschachtelten Inlines im Admin unterstützt, habe ich keine Möglichkeit, Tags für eine bestimmte Frage auszuwählen. Gibt es eine Möglichkeit zu überschreibenformfield_for_manytomany(self, db_field, request=None, **kwargs) oder etwas ähnliches, um meine Verwendung des nifty zu ermöglichenfilter_horizontal Widget und die automatische Erstellung derdate_added Spalte in die Datenbank? Dies scheint etwas zu sein, das Django von Haus aus tun sollte, solange Sie angeben, dass alle Spalten im Intermediate automatisch erstellt werden (außer den Fremdschlüsseln), vielleicht mitauto_created=True? oder so ähnlich

Antworten auf die Frage(3)

Ihre Antwort auf die Frage