diff --git a/src/registrar/admin.py b/src/registrar/admin.py
index 8406ac3a6..56f5310e0 100644
--- a/src/registrar/admin.py
+++ b/src/registrar/admin.py
@@ -3186,10 +3186,11 @@ class PortfolioAdmin(ListHeaderAdmin):
extra_context = extra_context or {}
extra_context["skip_additional_contact_info"] = True
- extra_context["members"] = self.get_user_portfolio_permission_non_admins(obj)
- extra_context["admins"] = self.get_user_portfolio_permission_admins(obj)
- extra_context["domains"] = obj.get_domains(order_by=["domain__name"])
- extra_context["domain_requests"] = obj.get_domain_requests(order_by=["requested_domain__name"])
+ if obj:
+ extra_context["members"] = self.get_user_portfolio_permission_non_admins(obj)
+ extra_context["admins"] = self.get_user_portfolio_permission_admins(obj)
+ extra_context["domains"] = obj.get_domains(order_by=["domain__name"])
+ extra_context["domain_requests"] = obj.get_domain_requests(order_by=["requested_domain__name"])
return super().change_view(request, object_id, form_url, extra_context)
def save_model(self, request, obj, form, change):
@@ -3208,8 +3209,11 @@ class PortfolioAdmin(ListHeaderAdmin):
obj.organization_name = obj.federal_agency.agency
# Remove this line when senior_official is no longer readonly in /admin.
- if obj.federal_agency and obj.federal_agency.so_federal_agency.exists():
- obj.senior_official = obj.federal_agency.so_federal_agency.first()
+ if obj.federal_agency:
+ if obj.federal_agency.so_federal_agency.exists():
+ obj.senior_official = obj.federal_agency.so_federal_agency.first()
+ else:
+ obj.senior_official = None
super().save_model(request, obj, form, change)
diff --git a/src/registrar/assets/js/get-gov-admin.js b/src/registrar/assets/js/get-gov-admin.js
index c01f5d784..25e35b73b 100644
--- a/src/registrar/assets/js/get-gov-admin.js
+++ b/src/registrar/assets/js/get-gov-admin.js
@@ -965,6 +965,7 @@ function initializeWidgetOnList(list, parentId) {
// If we can update the contact information, it'll be shown again.
hideElement(contactList.parentElement);
+ let seniorOfficialAddUrl = document.getElementById("senior-official-add-url").value;
let $seniorOfficial = django.jQuery("#id_senior_official");
let readonlySeniorOfficial = document.querySelector(".field-senior_official .readonly");
let seniorOfficialApi = document.getElementById("senior_official_from_agency_json_url").value;
@@ -981,7 +982,7 @@ function initializeWidgetOnList(list, parentId) {
$seniorOfficial.val("").trigger("change");
}else {
// Show the "create one now" text if this field is none in readonly mode.
- readonlySeniorOfficial.innerHTML = 'No senior official found. Create one now.'
+ readonlySeniorOfficial.innerHTML = `No senior official found. Create one now.`;
}
console.warn("Record not found: " + data.error);
}else {
diff --git a/src/registrar/templates/django/admin/portfolio_change_form.html b/src/registrar/templates/django/admin/portfolio_change_form.html
index fec1538d9..8de6cd5eb 100644
--- a/src/registrar/templates/django/admin/portfolio_change_form.html
+++ b/src/registrar/templates/django/admin/portfolio_change_form.html
@@ -8,6 +8,8 @@
{% url 'get-federal-and-portfolio-types-from-federal-agency-json' as url %}
+ {% url "admin:registrar_seniorofficial_add" as url %}
+
{{ block.super }}
{% endblock content %}