Comment enregistrer les mêmes données plusieurs fois avec une seule entrée sur l'écran de gestion de Django

Chose que tu veux faire

Je veux créer mon propre formulaire sur l'écran supplémentaire afin que je puisse enregistrer presque le même numéro que j'ai entré. Je souhaite séparer le formulaire sur l'écran d'ajout et l'écran de modification

manière

Dans cet exemple, plusieurs articles avec le même numéro de série mais des numéros de succursale différents peuvent être enregistrés en même temps.

Model

models.py


from django.db import models

class Job(models.Model):
	serial_number	=	models.IntegerField("Numéro de série")
	branch_number	=	models.IntegerField("Numéro de la succursale")
	deadline		=	models.DateField("La date limite")

Admin

admin.py


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

#Forme au moment de l'ajout
class JobAdminAddForm(forms.ModelForm):
	#Forme originale
	number_of_jobs	=	forms.IntegerField(lable="Nombre de travaux")
	
	class Meta:
		model = Job
		fields = ('serial_number', 'deadline')

#Forme au moment du changement
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')
	
	#Changement de forme
	def get_form(self, request, obj=None, **kwargs):
		if obj:#Spécifiez JobAdminChangeForm comme formulaire au moment du changement
			self.form = JobAdminChangeForm
		else:#Spécifiez JobAdminAddForm comme formulaire lors de l'ajout
			self.form = JobAdminAddForm
		return super().get_form(request, obj, **kwargs)
	
	def save_model(self, request, obj, form, change):
		#Enregistrer tel quel lors du changement
		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)

Remplacez get_form pour basculer entre les formulaires une fois ajoutés et modifiés. En remplaçant save_model, le processus au moment de l'enregistrement peut être réécrit. Lors du changement, enregistrez-le simplement tel quel et lors de l'ajout, activez l'instruction for avec la valeur du formulaire d'origine pour ajouter la valeur au numéro de branche et l'enregistrer. En remplaçant None par obj.pk, chacun peut être enregistré en tant que données distinctes.

Il semble que diverses choses peuvent être faites en concevant save_model. Veuillez indiquer s'il y a quelque chose.

Recommended Posts

Comment enregistrer les mêmes données plusieurs fois avec une seule entrée sur l'écran de gestion de Django
Comment enregistrer une seule donnée sur l'écran de gestion de Django
Transition vers l'écran de mise à jour avec le Django a tag
Comment filtrer les clés externes qui peuvent être sélectionnées sur l'écran d'administration de Django
Comment vérifier le comportement d'ORM avec un fichier avec django
Comment s'inscrire auprès de pypi
[Django] Comment donner des valeurs d'entrée à l'avance avec ModelForm
DJango Memo: depuis le début (plus de modifications sur l'écran de gestion)
[Introduction à Python] Comment obtenir des données avec la fonction listdir
Comment envoyer des fichiers d'un seul coup en se connectant à un hôte de l'autre côté de la plate-forme avec SCP en plusieurs étapes
Comment retourner les données contenues dans le modèle django au format json et les mapper sur le dépliant
[Il est ridicule de régler la valeur de réglage sur zéro!] Je reçois le même message plusieurs fois avec SQS.
Comment gérer "Vous avez plusieurs backends d'authentification configurés ..." (Django)
[Django] Corrige le pluriel du nom du modèle sur l'écran de gestion
[Django] Afficher les données d'inscription associées aux utilisateurs sur le formulaire d'inscription / d'édition (formulaire)
L'histoire de l'échec de la mise à jour de "calendar.day_abbr" sur l'écran d'administration de django
Comment gérer les données déséquilibrées
Comment démarrer avec Django
Comment augmenter les données avec PyTorch
Comment stocker des données CSV dans Amazon Kinesis Streams avec une entrée standard
TLE semblait effrayant en fonction de la manière dont l'entrée était reçue
L'histoire de la tentative de pousser SSH_AUTH_SOCK obsolète avec LD_PRELOAD à l'écran
Tracez plusieurs cartes et données en même temps avec matplotlib de Python
Comment effectuer un traitement arithmétique avec le modèle Django
Comment titrer plusieurs figures avec matplotlib
Comment vérifier la version de Django
(Journal 1) Comment créer, parcourir et enregistrer des données dans la base de données SQL du service Microsoft Azure avec python
Comment lire les données de problème avec Paiza
Utile pour changer les permissions sur Linux! Comment compter jusqu'à 31 d'une seule main.
[2015/11/19] Comment enregistrer un service localement à l'aide du SDK python avec naoqi os
Script pour utiliser correctement plusieurs comptes github dans le même référentiel sur la même machine
Comment obtenir la clé sur Amazon S3 avec Boto 3, exemple de mise en œuvre, notes
Comment générer automatiquement un document API avec le framework Django REST et POST à partir de l'écran de document
[Python] Comment enregistrer des images sur le Web à la fois avec Beautiful Soup
Je suis accro à la différence dans la façon dont Flask et Django reçoivent les données JSON
Liste de contrôle pour éviter de transformer les éléments de array of numpy avec for
Comment ajouter un traitement de pré-sauvegarde lors de l'ajout d'un objet sur le site d'administration de Django
[Astuces Python] Comment récupérer plusieurs clés avec la valeur maximale du dictionnaire
[Flask + Keras] Comment déduire plusieurs modèles à grande vitesse sur le serveur
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Comment lire des données originales ou des données externes sur Internet avec scikit-learn au lieu d'un ensemble de données attaché tel que l'iris
Comment attribuer plusieurs valeurs à la barre de couleurs Matplotlib
Comment créer des exemples de données CSV avec hypothèse
Le moyen le plus simple de démarrer avec Django
Enregistrez plusieurs modèles sous un seul formulaire avec Django
Recréez l'écran d'inscription du personnel de Django avec la classe
Comment développer une application de panier avec Django
J'ai essayé de sauvegarder les données avec discorde
[Django] Comment obtenir des données en spécifiant SQL.
Comment essayer l'algorithme des amis d'amis avec pyfof
Comment récupérer des données de courses de chevaux avec Beautiful Soup
Comment imprimer des messages de débogage sur la console Django
Comment implémenter "named_scope" de RubyOnRails avec Django
Construire plusieurs environnements Python sur le même système
Comment installer OpenGM sur OSX avec macports