auf speichern, wenn Benutzer bestimmte Option auswählen i Benutzer auf einer Seite nehmen will, wo er ein weiteres Feld ausgefüllt werden muß, kann und dann der Server-Betreiber StandardseiteZusätzliche Informationen in der Django-Verwaltungsseite sammeln?
Antwort
eher auf eine neue Seite als Umleitung umleiten override the form Sie können einfach, dass die Erstellungs- und Aktualisierungsseiten verwenden. Auf diese Weise können Sie der Modellform zusätzliche Felder hinzufügen und so die gesamte Formularverarbeitung an einem Ort speichern.
Zuerst müssen Sie Ihre Modeladmin einzurichten, das benutzerdefinierte Formular zu verwenden:
admin.py
from django.contrib import admin
from forms import BookAdminForm
from models import Book
class BookAdmin(admin.ModelAdmin):
form = BookAdminForm
admin.site.register(Book, BookAdmin)
forms.py
from django import forms
class BookAdminForm(forms.ModelForm):
additional_field = forms.CharField(max_length=100)
class Meta:
model = Book
Als nächstes Sie müssen override the save method überprüfen, ob die "bestimmte Option" ausgewählt ist, und dann das zusätzliche Feld ap behandeln passend. Innerhalb Klasse hast du so etwas wie dieses benötigen:
def save(self, *args, **kwargs):
if self.cleaned_data['certain_field'].value == 'certain option':
# process additional_field
# don't forget to call super to save the rest of the form
super(BookAdminForm, self).save(*arg, **kwargs)
Hinweis: dieser Code nicht getestet, aber es sollte Sie in die richtige Richtung weisen.
Es ist auch möglich, override the save_model()
Methode im ModelAdmin.
- 1. Zusätzliche Informationen in einem ListView
- 2. geben openid Benutzer zusätzliche Informationen
- 3. Zusätzliche Informationen mit Facebook API?
- 4. Sammeln von Google Tabellen-Informationen ohne Autorisierung
- 5. füllen Sie zusätzliche Informationen der 'Through' Tabelle in Segel
- 6. Zusätzliche Informationen mit .NET Enum verknüpfen
- 7. Django 1.5: Benutzer und zusätzliche Informationen
- 8. PHP-Anwendung Facebook - konfigurieren Sie zusätzliche Informationen
- 9. Zusätzliche Informationen mit überlappenden divs anzeigen. JQuery
- 10. Zusätzliche Low-Level-Informationen über PNG-Datei
- 11. Fehler bei URLs Viele zusätzliche Informationen
- 12. Zusätzliche Informationen zu verbundenen Zeilen hinzufügen
- 13. werfen benutzerdefinierte Ausnahme Informationen sammeln und erneut werfen
- 14. Sammeln von Informationen über die Thread-Planung unter Linux
- 15. Bash-Skript zum Sammeln von Informationen von mehreren Servern
- 16. Rails angezeigt werden zusätzliche Informationen in Drop-Down-Menü
- 17. Wie werden zusätzliche Informationen teilweise in eine verschachtelte Form übergeben?
- 18. zeigen zusätzliche Informationen, wenn ein ItemOverlay in Android geklickt wird
- 19. XSLT: Sammeln und Zusammenführen von Informationen aus mehreren Dateien
- 20. Besucherinformationen sammeln
- 21. Zwei XML-Dateien in Java zusammenführen und zusätzliche Informationen hinzufügen
- 22. Wie kann ich zusätzliche Informationen in openAM einstellen?
- 23. Sorgt für zusätzliche Informationen zu Flask des app.logger
- 24. Wie füge ich zusätzliche Informationen zu einer Pixmap hinzu?
- 25. Bewährtes Verfahren, um zusätzliche Informationen aus einer Validate-Funktion zurückzugeben
- 26. Sammeln Graphen in Neo4j
- 27. Zusätzliche Informationen: Fehler beim Konvertieren Wert [string] eingeben [Enumeration]
- 28. Erste ImageMagick konvertieren zusätzliche Informationen zu nicht schreiben
- 29. Holen Sie sich zusätzliche Informationen von Google API
- 30. So sammeln Sie GCLogs
Es könnte besser sein, hier die save_model-Methode der Admin-Klasse anstelle von form.save zu überschreiben, da Sie möglicherweise etwas wie den Benutzer umleiten müssen. –
In diesem zeige ich das zusätzliche Feld jedes Mal an. Aber ich will, wenn es bestimmte Bedingung nur dann gibt, wird es angezeigt. Ich verwende Javascript dafür, aber will mich ändern. – ha22109
Du gehst dann über den Umfang des django Admins hinaus. Der ganze Sinn des Administrators ist es, sofort einen funktionsfähigen Modelladministrator zu haben. Die JavaScript-Route ist keine schlechte Lösung. – Soviut