Django用の便利なバッテリー5個

絶えず開発する場合、さまざまなタスクに直面しますが、額では解決できないことがよくあります。 しかし、多くの問題はすでに誰かによって解決されています-この解決策を見つける必要があります。



だから、毎日、私は自分の人生を大いに促進するバッテリーの小さなコレクションを集めました。 急いで共有するもの:



django-select2



名前が示すように、バッテリーを使用すると、Djangoプロジェクトで一般的なselect2ライブラリを使用できます。

アプリケーションには、あらゆる場面に対応するフォームフィールドとウィジェットのセットが含まれています。



次の2種類のウィジェットがあります。



Github

ドキュメント



ジャンゴビットフィールド



値のリストをビットマップとしてモデルフィールドに保存できます。ビットマップの長さは、使用するデータベースのBigIntの最大長によって制限されます。



使用例(ドキュメントから取得):



from bitfield import BitField class MyModel(models.Model): flags = BitField(flags=( 'awesome_flag', 'flaggy_foo', 'baz_bar', ))
      
      





しかし、


私の意見では、バッテリーには重大な欠点があります-通常の方法では、管理パネルまたは独自のテンプレートのいずれかでフラグをわかりやすい形で表示することはできません。 私自身は、この問題を次のように解決しました。



models.py:


 from django.db import models from django.utils.translation import ugettext_lazy as _ from bitfield import BitField class MyModel(models.Model): FLAGS = ( ('flag1', _('flag 1 description')), ('flag2', _('flag 2 description')), ('flag3', _('flag 3 description')), ) flags = BitField([k for k, v in FLAGS])
      
      







forms.py


 from django import forms from .models import MyModel class MyModelForm(forms.ModelForm): def _set_choices(self, field, choices): self.fields[field].widget.choices = choices def __init__(self, *args, **kwargs): super(MyModelForm, self).__init__(*args, **kwargs) self._set_choices('flags', MyModel.FLAGS)
      
      







admin.py


 from django.contrib import admin from .forms import MyModelForm from .models import MyModel class MyModelAdmin(admin.ModelAdmin): form = MyModelForm admin.site.register(MyModel, MyModelAdmin)
      
      





Github



ジャンゴタギング



Djangoにはいくつかのタグ実装がありますが、このリポジトリの machinetagsブランチに注目してください。

このタグの実装では、名前空間間でそれらを分割する機能が追加され、それに応じて、異なるフィールドに異なるタグのセットを使用します。

タグに追加の値を割り当て、同じタグのセットを異なる値で保存することもできます。 正直なところ、私はまだこれの使用法を見つけていません。



GitHubでのいくつかの修正を加えたフォーク



しかし、モジュール自体は自動補完をサポートしていません-これは非常に便利な機能です。 多くの実装があります:1、2、3-これらはGoogleからの最初のリンクです。

しかし、上記のdjango-taggingバージョンの名前空間をサポートしているものはありません。そのため、この欠点を取り除く自由を取りました。 そして、私のフォークが現れました...



django-tagging-autosuggest



ドキュメントを書き直すことはありませんので、使用例を示します。



アプリケーションをINSTALLED_APPSおよびプロジェクトのurls.pyに追加する必要があります。

 from django.conf.urls import patterns, include, url urlpatterns = patterns('', url(r'^tagging/', include('tagging_autosuggest.urls')), )
      
      







そして、必要なフィールドをモデルに追加します。

 from django.db import models from tagging_autosuggest.fields import TagAutosuggestField class MyModel(models.Model): tags1 = TagAutosuggestField(namespace='ns1', max_length=300) tags2 = TagAutosuggestField(namespace='ns2', max_length=300)
      
      







結果:



Github



django-autocomplete-light



リストの操作を簡単にする別のバッテリー。 CharField、ForeignKey、ManyToManyなどのフィールド、および一般的な接続(ForeignKeyおよびM2M)の管理パネルに自動補完機能を備えた便利なウィジェットを作成します。



使用例は、 テストプロジェクトで確認できます。



そして、これはGenericForeignKeyが実際のプロジェクトでどのように見えるかです:



Github

ドキュメント



オープンソースへの謙虚な貢献: github.com/Yuego?tab=repositories



エラー、タイプミスなどに関するメッセージは、伝統的にPMで受け入れられます。



All Articles