Модель Джанго; сохранение дополнительных элементов в поле ManyToMany при сохранении - PullRequest
1 голос
/ 16 января 2011

Так что в настоящее время я внедряю новую систему тегирования поверх уже существующей базы данных.

В текущей системе тегов используется поле ManyToMany, однако клиент хотел бы иметь поле ввода с разделителями-запятыми(CharField).

Поэтому я решил, что лучший способ сделать это, не подвергая опасности существующую архитектуру, - это включить новое поле с разделителями-запятыми, но записать теги как ранее архитектуру ManyToMany.

Но как бы я ни пытался это сделать, теги сохраняются в модели тегов базы данных, но не в записи, к которой они должны применяться.

Простое краткое изложение:

 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)

Дальнейший фон модели:

tags            =   models.ManyToManyField(Tag, verbose_name='Tags', blank=True)
placeHolderTags =   models.CharField(max_length=400, verbose_name='Tags2', blank=True)

1 Ответ

2 голосов
/ 16 января 2011

Это связано с сохранением django m2m полей ПОСЛЕ самой модели. Я не уверен, поможет ли сохранение до того, как ваш код в save (), взгляните на сигнал m2m_change d - он выглядит именно так, как вам нужно.

...