私はこれに関する質問をしていました。しかし、私は直接私の質問をする方が良いと思う。 私は、 "ドメイン"と "グループ"の2つのテーブルとmanytomanyの関係を持つ "User"テーブルを持っています。 管理インターフェースでは、2つのModelMultipleChoiceFieldsとしてグループとドメインが表示されます。 しかし、よりユーザーフレンドリーな方法でUIにそれらを提示したいと思います。 ユーザーのプロパティに応じて選択/選択解除されたチェックボックスを使用して、ドメインとグループに使用可能な選択肢をそれぞれ表示します。 私はこれをadminで行うことができるのだろうと思っていたのですが、私は管理者から独立した自分のビューを作成する必要があります。Djangoフォーム
2
A
答えて
2
私は内蔵のウィジェットCheckboxSelectMultiple
はあなたが望むことをすると思います。そうでない場合は、独自のウィジェットを作成する必要があります。 documentation for widgetsは良い出発点です。 Djangoのソースから既存のウィジェットをコピーして変更することで簡単に始めることができます。
0
私はあなたが何をしようとしているのか分かりませんが、おそらくfilter_horizontalのようなものがあなたの望むことをするでしょう。
1
実際には管理者がデフォルトでモデルフォームを使用しています。だから、あなたはそれを上書きする必要があります。
from django import forms
from django.forms import widgets
class DomainForm(forms.ModelForm):
field2 = YourField(widget=widgets.CheckboxSelectMultiple)
class Meta:
model = Domain()
fields = ('field1', 'field2')
この場合、デフォルトのFIELD2フィールドタイプを上書きしています。
2
正確には、Django管理者がManyToManyFieldの場合に表示するように選択したウィジェットです。 この場合、あなたが感じるSelectMultipleウィジェットは、使い勝手が悪いです。
あなたのモデルフォームを使用している間は、いつでもウィジェットを選択できます。 しかし、Django管理者の場合は、往復が必要です。これをチェックしてください。
from django.forms import widgets
from django.contrib import admin
class MyModelAdmin(admin.ModelAdmin):
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
"""
Get a form Field for a ManyToManyField.
"""
# If it uses an intermediary model, don't show field in admin.
if db_field.rel.through is not None:
return None
if db_field.name in self.raw_id_fields:
kwargs['widget'] = admin.widgets.ManyToManyRawIdWidget(db_field.rel)
kwargs['help_text'] = ''
elif db_field.name in (list(self.filter_vertical) + list(self.filter_horizontal)):
kwargs['widget'] = admin.widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
else:
kwargs['widget'] = widgets.CheckboxSelectMultiple()
kwargs['help_text'] = ''
return db_field.formfield(**kwargs)
さて、あなたは今、Djangoの管理者のチェックボックスを取得します
class SomeModelAdmin(MyModelAdmin):
search_fields = ['foo', 'bar']
list_display = ('foo',)
ordering = ('-bar',)
admin.site.register(SomeModel, SomeModelAdmin)
としてadmin.pyであなたの日常管理を定義します。もちろん、CSSの変更が必要になります。
0
あなたはDjangoの管理インタフェースフィールドウィジェット
from django.forms import widgets
class UserAdmin(admin.ModelAdmin):
model = User
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
if db_field.name == 'domain' or db_field.name == 'groups':
kwargs['widget'] = widgets.CheckboxSelectMultiple()
# or just make all the manytomany fields as checkbox
kwargs['widget'] = widgets.CheckboxSelectMultiple()
return db_field.formfield(**kwargs)
# for other field
def formfield_for_dbfield(self, db_field, **kwargs):
.....
return super(UserAdmin, self).formfield_for_dbfield(db_field, **kwargs)
admin.site.register(User, UserAdmin)
関連する問題
- 1. Djangoフォーム:フォームに渡すパラメータ
- 2. Djangoのフォーム= id_fieldname
- 3. DjangoフォームをGET
- 4. Djangoフォームのカスタムフィールド
- 5. リストボックスDjangoフォーム
- 6. Django:フォームとカスタムテンプレート
- 7. シンプルなDjangoフォーム
- 8. Djangoフォーム(ファイルアップロード)
- 9. Djangoフォーム - キーエラー
- 10. Djangoはフォーム()
- 11. Django ModelFormとフォーム
- 12. Djangoのフォーム
- 13. djangoフォームのドロップダウンリスト
- 14. Djangoフォームのカスタマイズ
- 15. DjangoフォームをReactJs
- 16. Djangoのフォーム:
- 17. Djangoフォーム操作
- 18. Djangoサイドバーのフォーム
- 19. Djangoのフォーム - データベース
- 20. Djangoのフォームのドロップダウンリスト
- 21. Djangoフォーム、request.postとinitial
- 22. Djangoフォーム:隠しモデルフィールド?
- 23. Djangoの管理フォーム
- 24. Django - フォームの問題
- 25. AJAXとDJANGOのフォーム
- 26. 無効なDjangoフォーム
- 27. Django Crispyフォームとオプショングループ
- 28. Django:無効なフォーム
- 29. Djangoフォームとmany2many.throughフィールド
- 30. djangoのフォーム検証
を変更することができます-1私は、単一のCheckboxInputは、多対多分野のために働くために起こっているとは思いません。 –
今すぐお試しください! – aatifh