質問: django1.10では、_meta.get_field_by_nameが使えなくなったのですが、 _meta.get_field_by_nameと同じことができるものってあるんですか?
回答: django 1.10のModel `_meta` APIについてのドキュメントによると、`Options.get_field(name)`か`Options.get_fields()`を使って書き換えられる、とのことです。 具体的に`_meta.get_field_by_name(name)`についてどうすればよいかも書いてあったので (まだ英語のままですが) 引用します。 > > Assuming you have a model named `MyModel`, the following substitutions can be made to convert your code to the new API: > > > (中略) > > > * `MyModel._meta.get_field_by_name(name)` returns a tuple of these four > > values with the following replacements: > + `field` can be found by `MyModel._meta.get_field(name)` > + `model` can be found through the `model` attribute on the field. > + `direct` can be found by: `not field.auto_created or field.concrete` > > The `auto_created` check excludes all “forward” and “reverse” relations that are created by Django, but this also includes `AutoField` and `OneToOneField` on proxy models. We avoid filtering out these attributes using the `concrete` attribute. > + `m2m` can be found through the `many_to_many` attribute on the field. > > > ただし、新しいAPIを使う形にリファクタリングする方が良いだろう、とも書いてあります。 より詳しくはドキュメントを参考にしてください。 * Model `_meta` API -- Django 1.10 Documentation (ja)