Also implementiere ich derzeit ein neues Tagging-System für eine bereits vorhandene Datenbank.Django Modell; Speichern von zusätzlichen Elementen in einem ManyToMany-Feld beim Speichern
Das aktuelle Tagging-System verwendet ein ManyToMany-Feld, jedoch möchte der Client ein kommagetrenntes Eingabefeld (CharField) haben.
So dachte ich am besten Weg, es zu tun, ohne die aktuelle Architektur zu gefährden, ist das neue durch Komma getrennte Feld zu aktivieren, aber die Tags als die frühere ManyToMany-Architektur wegzuschreiben.
Aber wie auch immer ich es versuche, die Tags werden in das Datenbank-Tag-Modell gespeichert, aber nicht auf den Eintrag, für den sie gelten sollen.
Einfacher Überblick:
def save(self, *args, **kwargs):
currTags = self.placeHolderTags.split(",")
for tag in currTags:
dbtag, created = Tag.objects.get_or_create(name=tag)
self.tags.add(dbtag)
super(BeeldBankEntry, self).save(*args, **kwargs)
weiteres Modell Hintergrund:
tags = models.ManyToManyField(Tag, verbose_name='Tags', blank=True)
placeHolderTags = models.CharField(max_length=400, verbose_name='Tags2', blank=True)
get_or_create() gibt ein Abfrage-Set zurück, haben Sie versucht get_or_create() [0]? – crodjer
get_or_create gibt ein Tupel von (object, created_flag) –