Ich habe ein Modell namens Project, das ein m2m Feld Benutzer hat. Ich habe ein Aufgabenmodell mit einem FK-Projekt. Und es hat ein Feld assigned_to. Wie kann ich die Auswahl von assigned_to nur auf die Benutzer des aktuellen Projekts beschränken?Limit-Optionen zu
3
A
Antwort
0
Sie müssen ein custom form for the admin erstellen.
Ihr Formular sollte eine ModelChoiceField enthalten, in der Sie einen queryset-Parameter angeben können, der die verfügbaren Optionen definiert. Dieses Formular kann ein ModelForm sein.
(im folgenden Beispiel wird davon ausgegangen Benutzer haben ein FK-Modell zu Ihrem Projekt)
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
Dann das Formular auf der Modeladmin zuweisen.
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
Man könnte dies eine andere Art und Weise tun, diese raffinierte Form Fabrik Trick.
def make_task_form(project):
class _TaskForm(forms.Form):
assigned_to = forms.ModelChoiceField(
queryset=User.objects.filter(user__project=project))
class Meta:
model = Task
return _TaskForm
aus Ihrer Sicht Code Dann können Sie etwas tun:
project = Project.objects.get(id=234)
form_class = make_task_form(project)
...
form = form_class(request.POST)
Verwandte Themen
- 1. jQuery zu PHP zu Highcharts
- 2. Rückkehrliste zu JSON zu Angularjs
- 3. zu XML Dokument zu speichern
- 4. Schwierigkeit, zu TabBarController zu kommen
- 5. NSArray zu NSMutableArray zu NSString
- 6. CURL zu POST zu JIRA
- 7. UIInage zu NSDate zu NSString zu JSON String gibt Nullwert
- 8. tcl exec zu stdout Bedarf umgeleitet Ergebnis zu zu speichernden
- 9. PHP zu öffnen, zu lesen, zu/von mysql Datenbank
- 10. Polymer: Wie HTML zu Bildschirm zu loopen und zu rendern
- 11. 3 Spalten CSV, zu Adjazenz-Matrix, zu Networkgraph, zu Arcplot
- 12. NSString zu CLLocationDegrees zu NSString ist Wert zu verändern
- 13. Empfehlung zu Optimierungsroutine/Einschränkungen zu verwenden
- 14. mod_rewrite Regel zu Abfrage Zeichenfolge zu verhindern
- 15. Haskell: zu reparieren oder nicht zu beheben
- 16. Wie Boost zu zwingen, rpath zu verwenden?
- 17. Ist das zu unveränderbar zu const?
- 18. mit Logrotate zu Apache Logs zu drehen
- 19. Vorteil zu SELECT SELECT DISTINCT zu SELECT
- 20. Linq zu Entitäten Inner Join zu Datagrid
- 21. Wie Gurke zu einer Seite zu sagen?
- 22. genaue Ordner zu CSV zu Python importieren
- 23. Nicht zu Kafka Broker zu produzieren java.nio.BufferUnderflowException
- 24. Pipe-Ausgabe zu Datei zu Funktion
- 25. Git Filter-Zweig zu Stammordner zu entfernen
- 26. JavaScript, wie% 20 zu Raum zu ersetzen
- 27. Was zu importieren, um IOUtils.toString() zu verwenden?
- 28. DAO zu .mdb, zu ADO Vergleich
- 29. Zu GAC oder nicht zu GAC?
- 30. Java zu XSD oder XSD zu Java
Meine Benutzer keine FK mein Projekt Modell haben. Aber mein Projektmodell hat einen M2M-Feldbenutzer. – swoei
Die Idee ist die richtige, aber der angegebene Code funktioniert nicht, da die 'Projekt'-Variable nicht definiert ist. Die rechte Seite eines queryset-Parameters muss ein tatsächlicher Wert oder eine Variable sein, kein Feld im Modell. Sie müssen hier die Methode "__init__" des Formulars überschreiben, damit dies funktioniert. –