私はm2mフィールドユーザを持つProjectという名前のモデルを持っています。私はFKプロジェクトのタスクモデルを持っています。それにはフィールドが割り当てられています。 assigned_toの選択肢を現在のプロジェクトのユーザだけに制限するにはどうしたらよいですか?制限の選択
Q
制限の選択
3
A
答えて
0
custom form for the adminを作成する必要があります。
フォームにはModelChoiceFieldが含まれていなければなりません。利用可能な選択肢を定義するクエリーセットパラメータを指定できます。このフォームはです。はModelFormです。
(以下の例では、ユーザーがあなたのプロジェクトのモデルにFKを持っていると仮定し)
forms.py
from django import forms
class TaskForm(forms.ModelForm):
assigned_to = forms.ModelChoiceField(queryset=Users.objects.filter(user__project=project))
class Meta:
model = Task
その後ModelAdminのにフォームを割り当てます。
admin.py
from django.contrib import admin
from models import Task
from forms import TaskForm
class TaskAdmin(admin.ModelAdmin):
form = TaskForm
admin.site.register(Task, TaskAdmin)
1
あなたは、この気の利いたフォームの工場のトリックを使用して、別の方法でこれを行うことができます。私のユーザーは私のプロジェクトのモデルにFKを持っていない
project = Project.objects.get(id=234)
form_class = make_task_form(project)
...
form = form_class(request.POST)
関連する問題
- 1. NLTKのWordNet選択制限
- 2. 反応制限選択数
- 3. 制限、選択UNIONは列
- 4. NSOpenPanel iPhotoライブラリへの選択の制限
- 5. 副選択クエリのHQL制限
- 6. 複数選択HTMLの制限数PHP
- 7. plupload - 選択したファイルの制限数
- 8. mysqlの内部制限を選択
- 9. MySQL開始値としてrownumを選択して制限を選択
- 10. URLからのUITableViewの行の選択の制限
- 11. 特定の番号への選択ドロップダウンのオプションの制限
- 12. django restブラウズ可能なAPIのドロップダウンでの制限の選択
- 13. FullCalendarの制限スケジューラの選択可能な時間の量
- 14. Pythonのargparse型とnargsでの選択の制限> 1
- 15. フィールドの選択とMongoDBクエリ(Meteor)の合計結果の制限
- 16. mysqlの選択クエリの最適化および制限は、MySQL
- 17. anglejsのチェックボックスの選択を制限する方法
- 18. 2つ以上のチェックボックスの選択を制限する
- 19. django:formsetのフィールドの選択肢を制限する方法は?
- 20. ShinyのDTテーブルの行選択を制限する
- 21. md-選択した複数の制限付きの表示
- 22. md-multiple-selectのオプションの選択を制限する方法は?
- 23. jstree内の子ノードの選択数を制限する
- 24. googleドライブのPDFとdocファイルの選択制限
- 25. ジョイント、またはサブクエリの制限付きステートマントを選択
- 26. Bootstrap Datepicker - datepicker選択の最小年を制限する
- 27. 選択可能な項目の数を制限するjquery-ui
- 28. ブートストラップでドロップダウンの高さを制限する - 選択
- 29. 複数の制限がある値を選択
- 30. Django admin - ドロップダウンでの選択を制限する
:
は、その後、あなたのビューコードから、あなたはこのような何かを行うことができます。しかし、私のプロジェクトモデルにはM2Mフィールドユーザがいます。 – swoei
アイデアは正しいものですが、 'project'変数が定義されていないので、与えられたコードは機能しません。クエリセットパラメータの右側は、モデル上のフィールドではなく、実際の値または変数でなければなりません。実際にはフォームの '__init__'メソッドをオーバーライドしてこれを動作させる必要があります。 –