2016-11-17 7 views
1

RawSQL式のクエリーセットの属性を参照して、そのクエリーセットに注釈を付けるにはどうすればよいですか?RawSQL式のクエリーセット属性にアクセスする

Django管理者のLogEntryモデルをサイト全体のトラッキングシステムとして使用しようとしています。オブジェクトを保存するときにLogEntryテーブルにエントリを格納するのは簡単ですが、今はオブジェクトの大きなセットについてその情報を取得する効率的な方法が必要です。

LogEntry.action_timeから来る 'added_on'とLogEntry.user_idから来る 'added_by'という2つのフィールドを渡すクエリに、理想的には2つのフィールドを追加するメソッドを作成します。

効率を上げるため、私は他のフィルタリングを行った後にクエリのトラッキングフィールドを取得したいだけです。このため、私はクエリーセットで作業しています。私は余分なと注釈とRawSQLを使用してみました。私が実行し続ける問題は、RawSQLクエリ内のQuerySetのidフィールドにアクセスできないことです。 「ID」、私はいくつかの方法が必要になります。以下の方法は、問題が行末にある

def add_tracking_info(self, qs): 
     ct = ContentType.objects.get_for_model(qs.model).id 
     return qs.extra(select={'added_on': 
      'SELECT django_admin_log.action_time FROM django_admin_log 
      WHERE django_admin_log.content_type_id=%s AND 
      django_admin_log.action_flag=1 AND 
      django_admin_log.object_id=%s'}, select_params=(ct,'id')) 

)(私はqueryset.extraを使用してちょうどadded_onフィールドをどうしようとしています何の例です。オブジェクトのIDを取得する。

アイデア?

答えて

関連する問題