[PYTHON] So registrieren Sie dieselben Daten mehrmals mit einer Eingabe auf dem Verwaltungsbildschirm von Django

Was du machen willst

Ich möchte mein eigenes Formular auf dem zusätzlichen Bildschirm erstellen, damit ich fast die gleiche Nummer registrieren kann, die ich eingegeben habe. Ich möchte das Formular auf dem Hinzufügen-Bildschirm und dem Änderungsbildschirm trennen

Weise

In diesem Beispiel können mehrere Artikel mit derselben Seriennummer, aber unterschiedlichen Filialnummern gleichzeitig registriert werden.

Model

models.py


from django.db import models

class Job(models.Model):
	serial_number	=	models.IntegerField("Ordnungsnummer")
	branch_number	=	models.IntegerField("Zweig-Nummer")
	deadline		=	models.DateField("Die Deadline")

Admin

admin.py


from django.contrib import admin
from django import forms
from .models import Job

#Formular zum Zeitpunkt der Zugabe
class JobAdminAddForm(forms.ModelForm):
	#Ursprungsform
	number_of_jobs	=	forms.IntegerField(lable="Anzahl der Arbeiten")
	
	class Meta:
		model = Job
		fields = ('serial_number', 'deadline')

#Formular zum Zeitpunkt der Änderung
class JobAdminChangeForm(forms.ModelForm):
	class Meta:
		model = Job
		fields = ('serial_number', 'branch_number', 'deadline')
		

class JobAdmin(admin.ModelAdmin):
	list_display = ('id', 'serial_number', 'branch_number', 'deadline')
	
	#Formwechsel
	def get_form(self, request, obj=None, **kwargs):
		if obj:#Geben Sie JobAdminChangeForm als Formular zum Zeitpunkt der Änderung an
			self.form = JobAdminChangeForm
		else:#Geben Sie beim Hinzufügen JobAdminAddForm als Formular an
			self.form = JobAdminAddForm
		return super().get_form(request, obj, **kwargs)
	
	def save_model(self, request, obj, form, change):
		#Beim Ändern unverändert speichern
		if change:
			obj.save()
		else:
			for i in range(form.cleaned_data['number_of_jobs']):
				obj.pk	=	None
				obj.branch_number = i + 1
				obj.save()
				
admin.site.register(Job, JobAdmin)

Überschreiben Sie get_form, um beim Hinzufügen und Ändern zwischen Formularen zu wechseln. Durch Überschreiben von save_model kann der Prozess zum Zeitpunkt des Speicherns neu geschrieben werden. Speichern Sie es beim Ändern einfach so, wie es ist, und drehen Sie beim Hinzufügen die for-Anweisung mit dem Wert des Originalformulars, um den Wert zur Verzweigungsnummer hinzuzufügen und zu speichern. Durch Ersetzen von obj.pk durch None kann jedes als separate Daten gespeichert werden.

Es scheint, dass verschiedene Dinge getan werden können, indem man save_model entwickelt. Bitte weisen Sie darauf hin, wenn es etwas gibt.

Recommended Posts

So registrieren Sie dieselben Daten mehrmals mit einer Eingabe auf dem Verwaltungsbildschirm von Django
So registrieren Sie nur eine Daten auf dem Django-Verwaltungsbildschirm
Übergang zum Update-Bildschirm mit dem Django-Tag
So filtern Sie die externen Schlüssel, die auf dem Django-Verwaltungsbildschirm ausgewählt werden können
So überprüfen Sie das Verhalten von ORM mit einer Datei mit django
So registrieren Sie sich bei pypi
[Django] Wie man Eingabewerte im Voraus mit ModelForm angibt
DJango Memo: Von Anfang an (weitere Änderungen am Verwaltungsbildschirm)
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
So senden Sie Dateien auf einmal, indem Sie mit SCP in mehreren Schritten eine Verbindung zu einem Host auf der anderen Seite der Plattform herstellen
So geben Sie die im Django-Modell enthaltenen Daten im JSON-Format zurück und ordnen sie der Broschüre zu
[Es ist lächerlich, den Einstellwert auf Null zu setzen!] Ich erhalte dieselbe Nachricht mehrmals mit SQS.
Umgang mit "Sie haben mehrere Authentifizierungs-Backends konfiguriert ..." (Django)
[Django] Korrigieren Sie die Pluralform des Modellnamens auf dem Verwaltungsbildschirm
[Django] Registrierungsdaten für Benutzer im Registrierungs- / Bearbeitungsformular (Formular) anzeigen
Die Geschichte, dass "calendar.day_abbr" auf dem Admin-Bildschirm von django nicht aktualisiert werden konnte
Umgang mit unausgeglichenen Daten
Wie fange ich mit Django an?
Aufblasen von Daten (Datenerweiterung) mit PyTorch
Speichern von CSV-Daten in Amazon Kinesis Streams mit Standardeingabe
TLE schien beängstigend zu sein, je nachdem, wie die Eingabe empfangen wurde
Die Geschichte des Versuchs, SSH_AUTH_SOCK mit LD_PRELOAD auf dem Bildschirm veraltet zu halten
Zeichnen Sie mit Pythons Matplotlib mehrere Karten und Daten gleichzeitig
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
Wie man mit matplotlib mehrere Figuren betitelt
So überprüfen Sie die Version von Django
(Tagebuch 1) Erstellen, Durchsuchen und Registrieren von Daten in der SQL-Datenbank des Microsoft Azure-Dienstes mit Python
Wie man Problemdaten mit Paiza liest
Nützlich zum Ändern von Berechtigungen unter Linux! Wie man mit einer Hand bis zu 31 zählt.
[19.11.2015] So registrieren Sie einen Dienst lokal mit dem Python SDK bei naoqi os
Skript zur ordnungsgemäßen Verwendung mehrerer Github-Konten im selben Repository auf demselben Computer
Hinweise zum Implementieren des Schlüssels unter Amazon S3 mit Boto 3, Implementierungsbeispiel, Hinweise
So generieren Sie automatisch ein API-Dokument mit dem Django REST-Framework und POST vom Dokumentbildschirm
[Python] So speichern Sie Bilder mit Beautiful Soup sofort im Web
Ich bin süchtig nach dem Unterschied, wie Flask und Django JSON-Daten empfangen
Checkliste, wie Sie vermeiden können, die Elemente des Numpy-Arrays mit for zu drehen
Hinzufügen einer Pre-Save-Verarbeitung beim Hinzufügen eines Objekts auf der Django-Verwaltungssite
[Python-Tipps] So rufen Sie mehrere Schlüssel mit dem Maximalwert aus dem Wörterbuch ab
[Flask + Keras] So schließen Sie mehrere Modelle mit hoher Geschwindigkeit auf dem Server ab
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Lesen von Originaldaten oder externen Daten im Internet mit scikit-learn anstelle eines angehängten Datensatzes wie Iris
So weisen Sie der Matplotlib-Farbleiste mehrere Werte zu
Erstellen von CSV-Beispieldaten mit Hypothese
Der einfachste Weg, um mit Django zu beginnen
Speichern Sie mehrere Modelle in einem Formular mit Django
Erstellen Sie den Registrierungsbildschirm für Django-Mitarbeiter mit Klasse neu
So entwickeln Sie eine Cart-App mit Django
Ich habe versucht, die Daten mit Zwietracht zu speichern
[Django] So erhalten Sie Daten durch Angabe von SQL.
So testen Sie den Friends-of-Friends-Algorithmus mit pyfof
So kratzen Sie Pferderenndaten mit Beautiful Soup
So drucken Sie Debug-Meldungen auf der Django-Konsole
So implementieren Sie "named_scope" von RubyOnRails mit Django
Erstellen mehrerer Python-Umgebungen auf demselben System
So installieren Sie OpenGM unter OSX mit Macports