diff --git a/contracts/models.py b/contracts/models.py
index 1c02dbfd3faa7f5bfc01a2ff1a12d7a92793a828..1e5cb1f5e89f0a9e25736335e90f2ed8ca471119 100644
--- a/contracts/models.py
+++ b/contracts/models.py
@@ -1,6 +1,7 @@
 import typing
 
 from django.conf import settings
+from django.core.exceptions import ValidationError
 from django.db import models
 from django.db.models.signals import post_save
 from django.dispatch import receiver
@@ -561,6 +562,18 @@ class Contract(NameStrMixin, models.Model):
 
         self.save()
 
+    def clean(self):
+        if (
+            self.primary_contract is not None
+            and self.is_public
+            and not self.primary_contract.is_public
+        ):
+            raise ValidationError(
+                {
+                    "is_public": "Primární smlouva je neveřejná, tato smlouva nemůže být veřejná."
+                }
+            )
+
     class Meta:
         app_label = "contracts"
 
diff --git a/shared/templatetags/admin_extras.py b/shared/templatetags/admin_extras.py
index de2d88fa540495e380d6219565115a4b4aea2323..c4cf61c33be7cab4ce33e851545ca89af1045f0f 100644
--- a/shared/templatetags/admin_extras.py
+++ b/shared/templatetags/admin_extras.py
@@ -2,7 +2,6 @@ from django.template import Library
 
 from shared.admin import FieldsetInlineOrder
 
-
 register = Library()
 
 
@@ -27,33 +26,15 @@ def get_fieldsets_and_inlines(context):
     ):
         if choice == FieldsetInlineOrder.FIELDSET:
             fieldsets_and_inlines.append(
-                (
-                    FieldsetInlineOrder.FIELDSET,
-                    next(adminform)
-                )
+                (FieldsetInlineOrder.FIELDSET, next(adminform))
             )
         elif choice == FieldsetInlineOrder.INLINE:
-            fieldsets_and_inlines.append(
-                (
-                    FieldsetInlineOrder.INLINE,
-                    next(inlines)
-                )
-            )
+            fieldsets_and_inlines.append((FieldsetInlineOrder.INLINE, next(inlines)))
 
     for fieldset in adminform:
-        fieldsets_and_inlines.append(
-            (
-                FieldsetInlineOrder.FIELDSET,
-                fieldset
-            )
-        )
+        fieldsets_and_inlines.append((FieldsetInlineOrder.FIELDSET, fieldset))
 
     for inline in inlines:
-        fieldsets_and_inlines.append(
-            (
-                FieldsetInlineOrder.INLINE,
-                inline
-            )
-        )
+        fieldsets_and_inlines.append((FieldsetInlineOrder.INLINE, inline))
 
-    return fieldsets_and_inlines 
+    return fieldsets_and_inlines