tags.Tag

Model Info

Key

Value

Model Name

Tag

Verbose Name

tag

Verbose Name Plural

tags

Docstring

Tag(created, modified, id, tag_text, num_addons, enable_for_random_shelf)

Is Abstract

False

Is Proxy

False

Is Managed

True

Ordering

(‘tag_text’,)

Permissions

[]

Default Permissions

(‘add’, ‘change’, ‘delete’, ‘view’)

Indexes

[]

Constraints

[<UniqueConstraint: fields=(‘tag_text’,) name=’tag_text’>]

Database Table

tags

Base Manager

None

Default Manager

None

File

/data/olympia/src/olympia/tags/models.py

Starting Line Number

9

Method Resolution Order

(<class ‘olympia.tags.models.Tag’>, <class ‘olympia.amo.models.ModelBase’>, <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

addon_tags

ManyToOneRel

integer UNSIGNED

addons

ManyToManyField

addons

through tags.AddonTag

addons

created

DateTimeField

created

datetime(6)

created

enable_for_random_shelf

BooleanField

enable_for_random_shelf

bool

enable for random shelf

id (pk)

PositiveAutoField

id

integer UNSIGNED AUTO_INCREMENT

id

modified

DateTimeField

modified

datetime(6)

modified

num_addons

IntegerField

num_addons

integer

num addons

tag_text

CharField

tag_text

varchar(128)

tag text

Relations

Field Name

Field Type

Database Column

Database Type

Related Model

Related Name

addons

ManyToManyField

addons

through tags.AddonTag

addons.Addon

tags

fields_reverse_relation=[FieldReverseRelation(name=’addon_tags’, field_type=’ManyToOneRel’, field_db_type=’integer UNSIGNED’, related_model=’tags.AddonTag’, field_name_on_related_model=’tag’, field_type_on_related_model=’ForeignKey’)]

Reverse Relations

Field Name

Field Type

Database Type

Related Model

Field Name on Related Model

Field Type on Related Model

addon_tags

ManyToOneRel

integer UNSIGNED

tags.AddonTag

tag

ForeignKey

Methods

Other Methods

Method Name

Signature

add_tag

(self, addon)

can_reverse

(self)

get_admin_absolute_url

(self)

get_admin_url_path

(self)

get_next_by_created

(self, *, field=<django.db.models.fields.DateTimeField: created>, is_next=True, **kwargs)

get_next_by_modified

(self, *, field=<django.db.models.fields.DateTimeField: modified>, is_next=True, **kwargs)

get_previous_by_created

(self, *, field=<django.db.models.fields.DateTimeField: created>, is_next=False, **kwargs)

get_previous_by_modified

(self, *, field=<django.db.models.fields.DateTimeField: modified>, is_next=False, **kwargs)

get_unfiltered_manager

()

get_url_path

(self)

reload

(self)

remove_tag

(self, addon)

serializable_reference

(self)

update

(self, **kw)

update_stat

(self)

Private Methods

Method Name

Signature

_get_field_value_map

(self, meta, exclude=None)

Custom Managers

default

Class: ManagerBase

*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: BaseQuerySet

Represent a lazy database lookup for a set of objects.

Custom Methods
no_transforms(self)
only_translations(self)

Remove all transforms except translations.

optimized_count(self)

*Slightly optimized count() for cases where there is a DISTINCT in the queryset.

When a count() call is made on a queryset that has a distinct, that causes django to run the full SELECT (including all fields, distinct, ordering etc) in a subquery and then COUNT() on the result of that subquery, which is costly/innefficient. That’s tracked in https://code.djangoproject.com/ticket/30685. We can’t easily fix the fact that there is a subquery, but we can avoid selecting all fields and ordering in that subquery needlessly.*

pop_transforms(self)
transform(self, fn)

objects

Class: ManagerBase

*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: BaseQuerySet

Represent a lazy database lookup for a set of objects.

Custom Methods
no_transforms(self)
only_translations(self)

Remove all transforms except translations.

optimized_count(self)

*Slightly optimized count() for cases where there is a DISTINCT in the queryset.

When a count() call is made on a queryset that has a distinct, that causes django to run the full SELECT (including all fields, distinct, ordering etc) in a subquery and then COUNT() on the result of that subquery, which is costly/innefficient. That’s tracked in https://code.djangoproject.com/ticket/30685. We can’t easily fix the fact that there is a subquery, but we can avoid selecting all fields and ordering in that subquery needlessly.*

pop_transforms(self)
transform(self, fn)

!!! THIS DOCUMENT WAS AUTOGENERATED ON 2025-07-09 !!!