0

私はm2mフィールドで作業しようとしています。

私がやりたいのは、各タグをコンマで区切って、ユーザーが投稿のタグを書き込むことができる文字列 (CharField) を用意することです。

私はこの方法で作成を行うことができました:

  tags = tags.split(',')
        for tag in tags:
            obj, create = Tag.objects.get_or_create(name=tag)
            pub.tags.add(obj)

今、私はUpdateViewをしたいと思います。明らかに、フォームでリストから文字列への変換を指定しない場合、値が設定されていません。したがって、次のようになります。

for tag in tags:
    str+=tag+","

ポイントは:

  • リストから文字列への変換と文字列からリストへの変換を毎回書く必要がありますか?
  • この変換を行う方法をどこかに指定できますか? Django に既に実装されているものはありますか?

PS: UpdateView で、タグを削除した場合、手動で解析する必要があるため、どうすればタグをリレーションからも削除できますか?

ありがとう。

4

1 に答える 1

0

最も簡単な方法は、最初にすべてのタグを削除してからpub.tags、それらをすべて追加し直すことです。

# Clear the existing tags
pub.tags.clear()

tags = tags.split(',')
for tag in tags:
    obj, create = Tag.objects.get_or_create(name=tag)
    pub.tags.add(obj)

ループして文字列を作成する代わりに、次のより Pythonic な方法を試すことができます。

tags = ['red', 'green', 'blue'] ','.join(tags) 'red,green,blue'

于 2012-11-16T16:20:21.727 に答える