diff --git a/app/models.py b/app/models.py
index c6f16ba08264c9ebb16132be54421259ef8a3bc1..4d931f1ca5166cb40035a9121b1aa60ecf6bb309 100644
--- a/app/models.py
+++ b/app/models.py
@@ -104,7 +104,7 @@ class User(db.Model, UserMixin):
     username = db.Column(db.Text, nullable=False, unique=True)
     display_name = db.Column(db.Text, nullable=False)
     email = db.Column(db.Text)
-    groups = db.Column(postgresql.ARRAY(db.Text))
+    groups = db.Column(postgresql.ARRAY(db.Text), default=[])
     tokens = db.relationship("Token", backref="user")
 
     def get_id(self):
diff --git a/tests/functional/test_models.py b/tests/functional/test_models.py
index 4ec1ea5744dadf51c87420aee507237ce3663407..5956fec4a4722a4735b9a8c7b52f303746a2db95 100644
--- a/tests/functional/test_models.py
+++ b/tests/functional/test_models.py
@@ -14,6 +14,14 @@ import pytest
 from wtforms import ValidationError
 
 
+def test_user_groups(user_factory):
+    user = user_factory()
+    assert user.groups == []
+    groups = ['foo', 'Another group']
+    user = user_factory(groups=groups)
+    assert user.groups == groups
+
+
 def test_network_ip_properties(network_factory):
     # Create some networks
     network1 = network_factory(address='172.16.1.0/24', first_ip='172.16.1.10', last_ip='172.16.1.250')