質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.53%

Djangoのデータベース内データの翻訳

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 51

前提・実現したいこと

現在DjangoでnoteやYouTubeの様なコンテンツ投稿サイトを作成しています。

そこでコンテンツに対し、ユーザーによる通報機能を設けたいと思っています。
「著作権違反」「公序良俗に反する」「暴力的な表現を含む」など典型的な通報理由を設けようと思っています。

上記内容を複数言語に翻訳したいです。

発生している問題

templateで出力される文章やviewで返す文字は、i18nの機能を用い解決しています。
一方で、通報されるコンテンツは上記の典型的な通報理由とともに動的に作成されるため、通報理由をmodelで作成し、modelformによって選択式で投稿する形にしています。

典型的な通報理由は数も多くないので、i18nの様な方法で翻訳ができると非常に便利なんですが、そもそもそうした方法はあるものでしょうか。

それとも、通報理由と言語の組を複数作成し、セッションの言語に応じfilterをかけていくしかないんでしょうか。

該当のソースコード

通報理由と通報のmodelおよびformは下記の様にしています。

models.py

class AlartReason(models.Model):
  reason = models.CharField('通報理由', max_length=100)
  created_at = models.DateTimeField('作成日', default=timezone.now)

  def __str__(self):
    return self.reason

class Alart(models.Model):
  ip_address = models.CharField('IPアドレス', max_length=20)
  contents = models.ForeignKey(Contents, on_delete=models.CASCADE, verbose_name='通報されたコンテンツ')
  reason = models.ForeignKey(AlartReason, on_delete=models.CASCADE, verbose_name='通報理由')

  def __str__(self):
    return f'{self.reason}({self.contents})'

form.py

class AlartForm(forms.ModelForm):
    class Meta:
        model = Alart
        fields = ('reason',)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs['class'] = 'form-control'

よろしくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる