Repository: cisagov/manage.get.gov

Issue:
PublicContact thinks null fields are required, preventing security email from being set
### Current Behavior

On Django admin, if you try to update a security email it thinks that all null fields are required even though in the model it allows for null. Thus you can't save changes because this error blocks you. 

### Expected Behavior

You should be able to save with those fields being null, especially the 2nd and 3rd address fields and fax number (it's not the 90s)

### Steps to Reproduce

1.go to django admin and click PublicContact
2. click one of the PublicContact objects
3. click save
4. see errors on the null fields


### Environment

_No response_

### Additional Context

_No response_

### Issue Links

_No response_


Discussion:

Resolving patch:
diff --git a/src/registrar/migrations/0077_alter_publiccontact_fax_alter_publiccontact_org_and_more.py b/src/registrar/migrations/0077_alter_publiccontact_fax_alter_publiccontact_org_and_more.py
new file mode 100644
--- /dev/null
+++ b/src/registrar/migrations/0077_alter_publiccontact_fax_alter_publiccontact_org_and_more.py
@@ -0,0 +1,35 @@
+# Generated by Django 4.2.10 on 2024-03-15 18:47
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("registrar", "0076_alter_domainrequest_current_websites_and_more"),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name="publiccontact",
+            name="fax",
+            field=models.CharField(
+                blank=True, help_text="Contact's fax number (null ok). Must be in ITU.E164.2005 format.", null=True
+            ),
+        ),
+        migrations.AlterField(
+            model_name="publiccontact",
+            name="org",
+            field=models.CharField(blank=True, help_text="Contact's organization (null ok)", null=True),
+        ),
+        migrations.AlterField(
+            model_name="publiccontact",
+            name="street2",
+            field=models.CharField(blank=True, help_text="Contact's street (null ok)", null=True),
+        ),
+        migrations.AlterField(
+            model_name="publiccontact",
+            name="street3",
+            field=models.CharField(blank=True, help_text="Contact's street (null ok)", null=True),
+        ),
+    ]
diff --git a/src/registrar/models/public_contact.py b/src/registrar/models/public_contact.py
--- a/src/registrar/models/public_contact.py
+++ b/src/registrar/models/public_contact.py
@@ -60,10 +60,10 @@ def save(self, *args, **kwargs):
     )
 
     name = models.CharField(null=False, help_text="Contact's full name")
-    org = models.CharField(null=True, help_text="Contact's organization (null ok)")
+    org = models.CharField(null=True, blank=True, help_text="Contact's organization (null ok)")
     street1 = models.CharField(null=False, help_text="Contact's street")
-    street2 = models.CharField(null=True, help_text="Contact's street (null ok)")
-    street3 = models.CharField(null=True, help_text="Contact's street (null ok)")
+    street2 = models.CharField(null=True, blank=True, help_text="Contact's street (null ok)")
+    street3 = models.CharField(null=True, blank=True, help_text="Contact's street (null ok)")
     city = models.CharField(null=False, help_text="Contact's city")
     sp = models.CharField(null=False, help_text="Contact's state or province")
     pc = models.CharField(null=False, help_text="Contact's postal code")
@@ -72,6 +72,7 @@ def save(self, *args, **kwargs):
     voice = models.CharField(null=False, help_text="Contact's phone number. Must be in ITU.E164.2005 format")
     fax = models.CharField(
         null=True,
+        blank=True,
         help_text="Contact's fax number (null ok). Must be in ITU.E164.2005 format.",
     )
     pw = models.CharField(null=False, help_text="Contact's authorization code. 16 characters minimum.")


Test patch: