Meta opções do model

Este documento explica todas as opções de metadados <meta-options> possíveis que você pode dar a seu model em sua class Meta.

Opções disponíveis do Meta

abstract

Options.abstract

Se True, este model será um uma classe abstrata básica.

db_table

Options.db_table

O nome da tabela que será usado pelo model no banco de dados:

db_table = 'music_album'

Nomes de tabelas

Para poupar o seu tempo, o Django automaticamente deriva o nome das tabelas de banco de dados usando os nomes das classes models e da aplicação que o contém. O nomde de uma tabela de um model é construído juntando o “nome da app” do model – o nome usado em manage.py startapp – ao nome da classe do model, com um underscore entre eles.

Por exemplo, se você tem uma app bookstore (criada pelo manage.py startapp bookstore), um modelo definido como class Book terá uma tabela com o nome bookstore_book.

Para sobrescrever o nome da tabela, use o parametro db_table na class Meta.

Se o nome da sua tabela é uma palavra reservada do SQL, ou contém caracteres que não são permitidos em nomes de variáveis do Python – notadamente, o hífen – está OK. O Django colocará crases os nomes das colunas e tabelas sem você saber.

db_tablespace

Options.db_tablespace

O nome do tablespace do banco dados utilizado para o model. Se o backend não suporta tablespaces, esta opção é ignorada.

get_latest_by

Options.get_latest_by

O nome de um DateField ou DateTimeField no model. Isso especifica o campo padrão do seu model que será utilizado pelo método latest do Manager.

Exemplo:

get_latest_by = "order_date"

Veja a documentação para latest() para mais.

order_with_respect_to

Options.order_with_respect_to

Marca este objeto como “ordenável” em relação ao campo dado. Isso é quase sempre utilizado com objetos relacionados para permití-los ser ordenados a respeito de um objeto pai. Por exemplo, se um objeto Answer está relacionado a um objeto Question, e uma questão tem mais de uma resposta, e a ordem das respostas importa, você poderia fazer isso:

class Answer(models.Model):
    question = models.ForeignKey(Question)
    # ...

    class Meta:
        order_with_respect_to = 'question'

ordering

Options.ordering

O ordenamento padrão de um objeto, para usar quando obtem-se listas de objetos:

ordering = ['-order_date']

Isso é uma tupla ou lista de strings. Cada strin é o nomde de um campo com um prefixo opcional “-”, que indica ordem descendente. Campos sem um “-” na frente serão ordenados ascendentemente. Use a string ”?” para ordenar randomicamente.

Note

Indiferentemente de quão muitos sejam os campos em ordering, o admin usará somente o primeiro campo.

Por exemplo, para ordernar por um campo pub_date, use isto:

ordering = ['pub_date']

Para ordenar por pub_date descendentemente, use isto:

ordering = ['-pub_date']

Para ordenar por pub_date descendentemente, e por author ascendentemente, use isto:

ordering = ['-pub_date', 'author']

permissions

Options.permissions

Para adicionar permissões extras na tabela de permissões quando criar este objeto. Permissões para adicionar, deletar e editar são automaticamente criadas para cada objeto que use o admin. Este exemplo expecifica uma permissão extra can_deliver_pizzas:

permissions = (("can_deliver_pizzas", "Can deliver pizzas"),)

Isso é uma lista ou tupla de tuplas duplas no formato (código_da_permissão, nome_da_permissão_legível_por_humanos).

unique_together

Options.unique_together

Seta os nomes de campos, que juntos, devem ser únicos:

unique_together = (("driver", "restaurant"),)

Isso é uma lista de listas de campos que devem ser únicos quando estão juntos. ela é usada no Django admin e é executada a nível de banco de dados (i.e., a regra UNIQUE apropriada é incluída na consulta CREATE TABLE).

Por conveniência, unique_together pode ser uma lista singular quando lida com camos sozinhos:

unique_together = ("driver", "restaurant")

verbose_name

Options.verbose_name

Um nome legível-por-humanos para o objeto, no singular:

verbose_name = "pizza"

Se este não for fornecido, o Django usará uma versão do nome da classe: CamelCase se torna camel case.

verbose_name_plural

Options.verbose_name_plural

O nome no plural para o objeto:

verbose_name_plural = "stories"

Se este não for fornecido, o Django usará verbose_name + "s".