読者です 読者をやめる 読者になる 読者になる

django-returnfieldsというパッケージを作っていました

django-returnfields というパッケージを作っていました。 これは何? はじめはapi responseのfilteringをするライブラリとして作っていましたが、いろいろな変更の結果あるAPIのresponseに対してそのsubsetを返すためのoptimizerのようなものになりました。 …

generic foreignkeyのsub relationをprefetchする方法

はじめに generic foreignkey 自体のprefetchはできる。しかし、その更に先のrelationをprefetchすることができない。これをどうにかしようと言う苦肉の策を考えてみたという話。 言い訳 djangoのgeneric foreignkey関連のコードを読んでみたところ綺麗にで…

もう少しだけdjangoのprefetch_relatedについて考えてみる(条件付加したrelationのeager loading)

はじめに あるモデルに対してあるコンテキスト(文脈)に従った条件を加味した関係の元に値を取り出したい場合がある。そのような条件を付加した値を仮想的なフィールドとして扱うことができないかという話。 例えば以下の事がしたい X,Yというテーブルが存在…

djangoでprefetch_relatedで使えるようになる 独自のディスクリプタを作ってみる

prefetch_relatedで使えるようになる、独自のディスクリプタの作り方 はじめに 前回の記事 で prefetch_relatedの実装にprefetcher オブジェクトとでも呼ぶようなオブジェクトが必要になるということを説明した。 今度は、prefetcherのインターフェイスを実…

djangoでヘテロなリストのprefetch (generic foreign keyのprefetch_related)

djangoでヘテロなリストのprefetch djangoでヘテロなリストのprefetch。できないと思ったら普通に出来たのでわりとびっくりしたので記事にしてみた。 ヘテロなリスト? ここでのヘテロなリストと言うのは以下のようなリストを指している。 xs = [A(), B(), A(…

djangoでの集計は辛いという話 -- ORMは用法・用量を守って正しく使いましょう

djangoでの集計は辛いという話 -- ORMは用法・用量を守って正しく使いましょう djangoのORMの機能の不足にぶち当たり辛いという話。別の言い方をすると、ORMは用法・容量守って正しく使いましょうという感じになるかもしれない。 はじめに 以下のような情報…

久しぶりにdjangoのORMのことについて書いてみる 主に `prefetch_related()` の話

[django][python] 久しぶりにdjangoのORMのことについて書いてみる はじめに djangoのORMは正直好きじゃない。そもそも挙動が正確には把握しづらくてなんだか覚えにくいと感じる所がある。また、ドキュメントに書かれたとおりの書き方では不足することもあっ…

1ファイルでdjango restframeworkを試す

1ファイルでdjango restframeworkを試す 準備 pip install django djangorestframework 以下の様なコードを書く。test_onefile_restframework.py) 実行結果 $ python test_onefile_restframework.py Creating test database for alias 'default'... ..... --…

djangoのformが辛いという話

djangoのformが辛いという話 はじめに 例えば何らかの処理があるとする。それはある条件にマッチした場合にしか利用できない処理だとする。 T = TypeVar('T') class ActionDispatch(object): def test(self, x : T) -> str: return "A" or "B" or None def g…

djangoとsqlalchemyでunion allで繋げるようなものを参照・更新含めて考えてみた

djangoとsqlalchemyでunion allで繋げるようなものを参照・更新含めて考えてみた。 はじめはdjangoのormでviewを使った方法を考えて、ちょっとしたことからdjangoが思いもしない挙動をしたのでsqlalchemyではどうだったのか確認しようとした。 状況説明 以下…

djangoでのテストデータの生成方法について考えてみた

djangoでのテストデータの生成方法について考えてみた。 集計や検索などのテストが辛い 今までdjangoでテストデータを作ってきてfactory boyを使ったテストを前提にするというのがあったのだけれど。 これは、必要となるモデルの数が少ないものでは上手くい…

djangoのviewとurl patternの定義をもう少しstrictな感じにできないかと考えていた

まとまってない感じの文章だけれど備忘録として残す。 djangoでurls.pyにview関数を登録する時に、以下のような状況がだるいと思った。 urls.pyに定義したview関数を登録し忘れる view関数の引数を変えた後に、urls.pyのpatternを変更し忘れている そしてそ…

django templateのplaceholderとangular.jsのplaceholderが衝突しないようにする方法

デフォルトではどちらのplaceholderも以下の様な形式なので衝突する。 {{foo}} これを衝突しないようにangular.js側の設定を書き換える。 var myApp = angular.module("MyApp"); myApp.config(function($interpolateProvider) { $interpolateProvider.startS…

angular.jsの$httpでdjangoのcsrf protectionがかかったapiを呼ぶ方法。

cookieからcsrftokenを取るとかそういうこと必要なくて、以下の様な設定を書いてあげればok $httpProvider.defaults.xsrfCookieName = 'csrftoken'; $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';

venusianなくてもよいんじゃないの?

pyramidはviewの登録にvenusianを使っている。 venusian? venusianとは何かというと、 decoratorとして呼ばれた時には何の影響も与えない。クロージャを登録する scan()が呼ばれたタイミングで、登録されたクロージャを実行する というもの。 これを使って、…