1

そのため、現在、既存のデータベースの上に新しいタグ付けシステムを実装しています。

現在のタグ付けシステムは 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)
4

1 に答える 1

2

これは、django がモデル自体の後に m2m フィールドを保存するためです。save() でコードを保存する前に保存することが役立つかどうかはわかりません.m2m_change dシグナルを見てください-それはまさにあなたが必要としているもののように見えます.

于 2011-01-16T18:19:28.910 に答える