だから、毎日、私は自分の人生を大いに促進するバッテリーの小さなコレクションを集めました。 急いで共有するもの:
django-select2
名前が示すように、バッテリーを使用すると、Djangoプロジェクトで一般的なselect2ライブラリを使用できます。
アプリケーションには、あらゆる場面に対応するフォームフィールドとウィジェットのセットが含まれています。
次の2種類のウィジェットがあります。
- Light-すべての値はすぐにページにレンダリングされるため、値のリストはそれほど長くないためのウィジェット。
- Heavy-外部ソースからAjax経由でデータをロードするための高度なウィジェット。 このようなソースは独自のビューにすることも、複雑なロジックが不要な場合は、対応するAutoHeavyウィジェットと組み合わせたデータ組み込みdjango-select2ビューを使用してデータを返すこともできます。
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で受け入れられます。