HumanSignal/label-studio · error · ValueError
No memberships found for user {user}
Error message
No memberships found for user {user} What it means
Organization.find_by_user looks up the OrganizationMember rows for a user and raises ValueError if the user has no membership in any organization. Label Studio expects every active user to belong to at least one organization, so an account without memberships cannot resolve an active organization.
Source
Thrown at label_studio/organizations/models.py:130
created_at = models.DateTimeField(_('created at'), auto_now_add=True)
updated_at = models.DateTimeField(_('updated at'), auto_now=True)
contact_info = models.EmailField(_('contact info'), blank=True, null=True)
def __str__(self):
return self.title + ', id=' + str(self.pk)
@classmethod
def create_organization(cls, created_by=None, title='Your Organization', **kwargs):
_create_organization = load_func(settings.CREATE_ORGANIZATION)
return _create_organization(title=title, created_by=created_by, **kwargs)
@classmethod
def find_by_user(cls, user, check_deleted=False):
memberships = OrganizationMember.objects.filter(user=user).prefetch_related('organization')
if not memberships.exists():
raise ValueError(f'No memberships found for user {user}')
membership = memberships.first()
if check_deleted:
return (membership.organization, True) if membership.deleted_at else (membership.organization, False)
return membership.organization
@classmethod
def find_by_invite_url(cls, url):
token = url.strip('/').split('/')[-1]
if len(token):
return Organization.objects.get(token=token)
else:
raise KeyError(f"Can't find Organization by welcome URL: {url}")
def has_user(self, user):
return self.users.filter(pk=user.pk).exists()
def has_deleted(self, user):View on GitHub (pinned to 0b49e9b539)
Solutions
- Check the user has at least one OrganizationMember row before calling find_by_user
- Re-create the membership: OrganizationMember.objects.create(user=user, organization=org)
- Invite the user to an organization via the API to create the membership
- If the user should be self-hosted solo, create a new organization for them
Example fix
// before
org = Organization.find_by_user(user)
// after
if OrganizationMember.objects.filter(user=user).exists():
org = Organization.find_by_user(user)
else:
org = _create_organization(title=f"{user.email}'s organization", created_by=user) Defensive patterns
Strategy: try-catch
Validate before calling
if not OrganizationMember.objects.filter(user=user).exists():
raise Skip("user has no organization membership") Try / catch
try:
org = Organization.find_by_user(user)
except ValueError:
org = _create_organization(title=f"{user.email}'s org", created_by=user) Prevention
- Always create a default org when creating users in scripts
- Use official signup APIs that create memberships
- Check membership existence in test fixtures
- Restore membership rows when importing users from backups
When it happens
Trigger: Calling Organization.find_by_user(user) when OrganizationMember.objects.filter(user=user).exists() is False — e.g. user was deleted from their only organization, was soft-deleted everywhere, or was created without a default org.
Common situations: Users removed from their sole organization then logging in; scripts creating users directly in the DB bypassing org creation hooks; test fixtures with users but no memberships; user accounts imported from backups without membership rows.
Related errors
- Cannot filter on column "{_filter.filter.removeprefix('filte
- LABEL_STUDIO_HOST must be a subpath if DOMAIN_FROM_REQUEST i
- SECURE_PROXY_SSL_HEADER must be configured as "<header>,<val
- Incorrect value type in key "{key}" = "{value}". It should b
- Incorrect value type in key "{key}" = "{value}". It should b
AI-assisted analysis of HumanSignal/label-studio@0b49e9b539 (2026-08-29).
Data as JSON: /api/errors/21ad0fa1c7685071.
Report an issue: GitHub.