J'ai le code ci-dessous où j'ai modifié le formulaire d'administration pour transmettre des informations supplémentaires qui sont ensuite utilisées après que le processus de sauvegarde est terminé. Cela fonctionne très bien lorsque vous utilisez le bouton de sauvegarde. Le problème avec le code ci-dessous est que lorsque quelqu'un utilise le bouton "enregistrer comme nouveau", sample_pk serait l'identifiant de l'échantillon courant et non le nouvel échantillon généré. Ma question est comment obtenir l'ID du nouvel objet après avoir appelé le super sur save_related.django admin comment obtenir l'ID de nouvel objet lors de la substitution save_related
@admin.register(Sample)
class SampleAdmin(ModelAdmin):
save_as = True
def save_related(self, request, form, formsets, change):
super(SampleAdmin, self).save_related(request, form, formsets, change)
args = request.resolver_match.args
if len(args) < 1: # not previously saved
return
sample_pk = int(args[0])
new_things = []
for formset in formsets:
for key, val in formset.data.items():
if key.startswith('robo_'):
new_things.append(val)
x = sum(new_things)
sam = Sample.objects.get(pk=sample_pk)
OtherTable.objects.create(x=x, sample=sam)