diff --git a/djblets/util/fields.py b/djblets/util/fields.py
index a74911849d9cf6cf5597856d175a876a79d8b7b0..9acfdbdbe09c3ca6ba4d6518f6ceeb0b2153c3ce 100644
--- a/djblets/util/fields.py
+++ b/djblets/util/fields.py
@@ -286,8 +286,13 @@ class CounterField(models.IntegerField):
 
         def _reinit(model_instance):
             """Re-initializes the value in the database from the initializer."""
-            if (model_instance.pk and self._initializer and
-                callable(self._initializer)):
+            if not model_instance.pk:
+                # We don't want to end up defaulting this to 0 if creating a
+                # new instance. Instead, we'll want to handle this the next
+                # time the object is accessed.
+                return
+
+            if self._initializer and callable(self._initializer):
                 self._locks[model_instance] = 1
                 value = self._initializer(model_instance)
                 del self._locks[model_instance]
