0

データベースの列からデータのチャンクを取得した後、djangoでサブストリングを返す方法があるかどうか知りたいです。この場合、「contents」列からデータを取得して、使用可能なテキストを操作して返すようにしています。

質問リスト方式の検索

def prepare_questions(subject_id, scope, sort, topic, subtopic):
   question_list = Question.objects.filter(subject=subject_id)
return question_list

コンテンツを含むモデル

class Question(models.Model):
   subject = models.ForeignKey(Subject)
   content = models.TextField(verbose_name=_('Content'))

私がやりたいのは、question_listのデータを「contents」から取得し、Pythonのサブストリングメソッドに渡すことです。ここから取るべき手順がわかりません。さらに、取得した元の「コンテンツ」値を上書きしたくないので、メソッドの戻り値にタグ付けされた新しいキーを使用して、メソッドの結果をquestion_listの一部として返すようにします。

ポインタや参照は大歓迎です!ありがとう!

4

2 に答える 2

2

モデルでメソッドを定義します。

class MyModel(models.Model):
    ...
    def contents_substring(self):
        # do stuff
        return the_substring

そうすれば、インスタンスにアクセスするときはいつでも、それ自体であろうとループ内であろうと、次のことができます。

instance.contents_substring()

またはテンプレートで:

{{ instance.contents_substring }}
于 2012-07-31T18:14:59.290 に答える
1

これはあなたが探しているものですか?

return [{'substring': substring_method(q.content), 'question': q} for q in question_list]

当然、必要substring_methodなPythonサブストリングメソッドを定義または置換する必要があります。

この行は、Pythonの「リスト内包」構文を使用して、各Questionオブジェクトを2つの項目、つまり(部分文字列)と(元のオブジェクト)question_listを含む辞書にマップします。substringquestionQuestion

新しいものを使用する方法は次のprepare_questionsとおりです。

questions = prepare_questions( ... )  # whatever arguments
first_question = questions[0]  # let's assume there's at least 1
print first_question['substring']  # prints the substring of the first question's content
print first_question['question'].content  # prints the first question's full content

完全を期すために、簡単な例'substring_method'を次に示します。

def substring_method(s):
    return s[1:4]  # use Python slice syntax to return 2nd through 4th chars of string
于 2012-07-31T17:09:45.940 に答える