Source code for django_musicbrainz_connector.models.artist

from django.db import models


[docs] class Artist(models.Model): """ PostgreSQL Definition --------------------- The :code:`artist` table is defined in the MusicBrainz Server as: .. code-block:: sql CREATE TABLE artist ( -- replicate (verbose) id SERIAL, gid UUID NOT NULL, name VARCHAR NOT NULL, sort_name VARCHAR NOT NULL, begin_date_year SMALLINT, begin_date_month SMALLINT, begin_date_day SMALLINT, end_date_year SMALLINT, end_date_month SMALLINT, end_date_day SMALLINT, type INTEGER, -- references artist_type.id area INTEGER, -- references area.id gender INTEGER, -- references gender.id comment VARCHAR(255) NOT NULL DEFAULT '', edits_pending INTEGER NOT NULL DEFAULT 0 CHECK (edits_pending >= 0), last_updated TIMESTAMP WITH TIME ZONE DEFAULT NOW(), ended BOOLEAN NOT NULL DEFAULT FALSE CONSTRAINT artist_ended_check CHECK ( ( -- If any end date fields are not null, then ended must be true (end_date_year IS NOT NULL OR end_date_month IS NOT NULL OR end_date_day IS NOT NULL) AND ended = TRUE ) OR ( -- Otherwise, all end date fields must be null (end_date_year IS NULL AND end_date_month IS NULL AND end_date_day IS NULL) ) ), begin_area INTEGER, -- references area.id end_area INTEGER -- references area.id ); """ id = models.IntegerField("ID", primary_key=True, db_column="id") gid = models.UUIDField("GID", db_column="gid") name = models.CharField(max_length=255, db_column="name") sort_name = models.CharField("Sort Name", max_length=255, db_column="sort_name") begin_date_year = models.SmallIntegerField("Begin Date Year", null=True, db_column="begin_date_year") begin_date_month = models.SmallIntegerField("Begin Date Month", null=True, db_column="begin_date_month") begin_date_day = models.SmallIntegerField("Begin Date Day", null=True, db_column="begin_date_day") end_date_year = models.SmallIntegerField("End Date Year", null=True, db_column="end_date_year") end_date_month = models.SmallIntegerField("End Date Month", null=True, db_column="end_date_month") end_date_day = models.SmallIntegerField("End Date Day", null=True, db_column="end_date_day") type = models.ForeignKey("ArtistType", null=True, db_column="type", on_delete=models.PROTECT) area = models.ForeignKey("Area", null=True, db_column="area", on_delete=models.PROTECT) gender = models.ForeignKey("Gender", null=True, db_column="gender", on_delete=models.PROTECT) comment = models.CharField(max_length=255, db_column="comment", default="") edits_pending = models.PositiveIntegerField("Edits Pending", db_column="edits_pending", default=0) last_updated = models.DateTimeField("Last Updated", db_column="last_updated") ended = models.BooleanField("Ended?", default=False, db_column="ended") begin_area = models.ForeignKey( "Area", verbose_name="Begin Area", null=True, db_column="begin_area", on_delete=models.PROTECT, related_name="artists_begin_area", ) end_area = models.ForeignKey( "Area", verbose_name="End Area", null=True, db_column="end_area", on_delete=models.PROTECT, related_name="artists_end_area", ) credits = models.ManyToManyField("ArtistCredit", through="ArtistCreditName", related_name="artists") def __str__(self) -> str: return self.name class Meta: managed = False db_table = "artist" verbose_name_plural = "Artist" ordering = ["name"]