From b9d465f701ade115cbf054ad86c9e04beb62270c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org>
Date: Thu, 30 Mar 2023 10:25:46 +0200
Subject: [PATCH] save primary keys before using in save_model

---
 contracts/admin.py | 27 +++++++++++----------------
 1 file changed, 11 insertions(+), 16 deletions(-)

diff --git a/contracts/admin.py b/contracts/admin.py
index e39fc25..40623f0 100644
--- a/contracts/admin.py
+++ b/contracts/admin.py
@@ -5,26 +5,18 @@ from django.contrib import admin
 from django.contrib.auth.models import Permission
 from django.utils.html import format_html
 from import_export import resources
-from nested_admin import NestedModelAdmin, NestedStackedInline, NestedTabularInline
+from nested_admin import (NestedModelAdmin, NestedStackedInline,
+                          NestedTabularInline)
 from rangefilter.filters import DateRangeFilter
 
 from shared.admin import FieldsetInlineOrder, MarkdownxGuardedModelAdmin
 
 from .forms import ContractAdminForm, ContractFileAdminForm, SigneeAdminForm
-from .models import (
-    Contract,
-    Contractee,
-    ContracteeSignature,
-    ContracteeSignatureRepresentative,
-    ContractFile,
-    ContractFilingArea,
-    ContractIntent,
-    ContractIssue,
-    ContractType,
-    Signee,
-    SigneeSignature,
-    SigneeSignatureRepresentative,
-)
+from .models import (Contract, Contractee, ContracteeSignature,
+                     ContracteeSignatureRepresentative, ContractFile,
+                     ContractFilingArea, ContractIntent, ContractIssue,
+                     ContractType, Signee, SigneeSignature,
+                     SigneeSignatureRepresentative)
 
 
 class ContractResource(resources.ModelResource):
@@ -297,6 +289,9 @@ class ContractAdmin(
         return queryset
 
     def save_model(self, request, obj, form, change):
+        # Need to generate primary keys first
+        parent_save_response = super().save_model(request, obj, form, change)
+
         if obj.valid_start_date is None:
             last_signature_date = None
 
@@ -313,7 +308,7 @@ class ContractAdmin(
 
             obj.valid_start_date = last_signature_date
 
-        return super().save_model(request, obj, form, change)
+        return parent_save_response
 
     def has_change_permission(self, request, obj=None):
         if (
-- 
GitLab