# addons.AddonUser

## Model Info

| Key | Value |
|---|-----|
| Model Name | AddonUser |
| Verbose Name | addon user |
| Verbose Name Plural | addon users |
| Docstring | <p>AddonUser(id, addon, user, role, original\_role, listed, position)</p> |
| Is Abstract | False |
| Is Proxy | False |
| Is Managed | True |
| Ordering | [] |
| Permissions | [] |
| Default Permissions | ('add', 'change', 'delete', 'view') |
| Indexes | [<Index: fields=['listed'] name='addons_users_listed_idx'>, <LongNameIndex: fields=['addon', 'user', 'listed'] name='addons_users_addon_user_listed_idx'>, <Index: fields=['addon', 'listed'] name='addons_users_addon_listed_idx'>] |
| Constraints | [<UniqueConstraint: fields=('addon', 'user') name='addons_users_addon_user'>] |
| Database Table | addons_users |
| Base Manager | unfiltered |
| Default Manager | None |
| File | /data/olympia/src/olympia/addons/models.py |
| Starting Line Number | 2247 |
| Method Resolution Order | (<class 'olympia.addons.models.AddonUser'>, <class 'olympia.amo.models.OnChangeMixin'>, <class 'olympia.amo.models.SaveUpdateMixin'>, <class 'django.db.models.base.Model'>, <class 'django.db.models.utils.AltersData'>, <class 'object'>) |

## Fields

| Field Name | Field Type | Database Column | Database Type | Verbose Name |
|----------|----------|---------------|-------------|------------|
| `BannedUserContent_addons_users+` | ManyToOneRel |  | integer UNSIGNED |  |
| `addon` | ForeignKey | addon_id | integer UNSIGNED | addon |
| `bannedusercontent` | ManyToManyRel |  | through users.BannedUserContent_addons_users |  |
| `id (pk)` | PositiveAutoField | id | integer UNSIGNED AUTO_INCREMENT | id |
| `listed` | BooleanField | listed | bool | Listed |
| `original_role` | SmallIntegerField | original_role | smallint | original role |
| `position` | IntegerField | position | integer | position |
| `role` | SmallIntegerField | role | smallint | role |
| `user` | ForeignKey | user_id | integer | user |

## Relations

| Field Name | Field Type | Database Column | Database Type | Related Model | Related Name |
|----------|----------|---------------|-------------|-------------|------------|
| `addon` | ForeignKey | addon_id | integer UNSIGNED | addons.Addon | addonuser_set |
| `user` | ForeignKey | user_id | integer | users.UserProfile | addonuser_set |

fields_reverse_relation=[FieldReverseRelation(name='BannedUserContent_addons_users+ (no reverse relation allowed)', field_type='ManyToOneRel', field_db_type='integer UNSIGNED', related_model='users.BannedUserContent_addons_users', field_name_on_related_model='addonuser', field_type_on_related_model='ForeignKey'), FieldReverseRelation(name='addonuser_set', field_type='ManyToManyRel', field_db_type='through users.BannedUserContent_addons_users', related_model='users.BannedUserContent', field_name_on_related_model='addons_users', field_type_on_related_model='ManyToManyField')]

## Reverse Relations

| Field Name | Field Type | Database Type | Related Model | Field Name on Related Model | Field Type on Related Model |
|----------|----------|-------------|-------------|---------------------------|---------------------------|
| `BannedUserContent_addons_users+ (no reverse relation allowed)` | ManyToOneRel | integer UNSIGNED | users.BannedUserContent_addons_users | addonuser | ForeignKey |
| `addonuser_set` | ManyToManyRel | through users.BannedUserContent_addons_users | users.BannedUserContent | addons_users | ManyToManyField |

## Methods

### Other Methods

| Method Name | Signature |
|-----------|---------|
| `get_original_role_display` | `(self, *, field=<django.db.models.fields.SmallIntegerField: original_role>)` |
| `get_role_display` | `(self, *, field=<django.db.models.fields.SmallIntegerField: role>)` |
| `get_unfiltered_manager` | `()` |
| `on_change` | `(callback)` |
| `reload` | `(self)` |
| `update` | `(self, **kwargs)` |


### Private Methods

| Method Name | Signature |
|-----------|---------|
| `_get_field_value_map` | `(self, meta, exclude=None)` |
| `_reset_initial_attrs` | `(self, attrs=None)` |
| `_send_changes` | `(self, old_attr, new_attr_kw)` |


## Custom Managers

### default

**Class:** `AddonUserManager`

*Base for all managers in AMO.

Returns BaseQuerySets.

If a model has translated fields, they'll be attached through a transform
function.*

#### Custom Methods

##### `transform(self, fn)`


#### Custom QuerySet

**Class:** `AddonUserQuerySet`

*Represent a lazy database lookup for a set of objects.*

##### Custom Methods

###### `undelete(self)`

### objects

**Class:** `AddonUserManager`

*Base for all managers in AMO.

Returns BaseQuerySets.

If a model has translated fields, they'll be attached through a transform
function.*

#### Custom Methods

##### `transform(self, fn)`


#### Custom QuerySet

**Class:** `AddonUserQuerySet`

*Represent a lazy database lookup for a set of objects.*

##### Custom Methods

###### `undelete(self)`

### unfiltered

**Class:** `AddonUserManager`

*Base for all managers in AMO.

Returns BaseQuerySets.

If a model has translated fields, they'll be attached through a transform
function.*

#### Custom Methods

##### `transform(self, fn)`


#### Custom QuerySet

**Class:** `AddonUserQuerySet`

*Represent a lazy database lookup for a set of objects.*

##### Custom Methods

###### `undelete(self)`

### unfiltered_for_relations

**Class:** `UnfilteredAddonUserManagerForRelations`

*Like AddonUserManager, but defaults to include deleted objects.

Designed to be used in reverse relations of AddonUser that want to include
soft-deleted objects.*

#### Custom Methods

##### `transform(self, fn)`


#### Custom QuerySet

**Class:** `AddonUserQuerySet`

*Represent a lazy database lookup for a set of objects.*

##### Custom Methods

###### `undelete(self)`


---

!!! THIS DOCUMENT WAS *AUTOGENERATED* ON 2025-07-31 !!!