Meta Class nei modelli Django

Vaibhav Vaibhav 4 dicembre 2021
Meta Class nei modelli Django

I metadati si riferiscono a un insieme specifico di dati che fornisce informazioni su altri dati. In Django, utilizziamo i modelli Django per progettare le tabelle del nostro database e i loro campi. Se dobbiamo aggiungere alcuni dati sul modello stesso, usiamo la classe Meta. Scopri di più sulla classe Meta nei modelli Django in questo articolo.

La classe Meta a Django

La classe Meta è una classe interna, il che significa che è definita all’interno del modello come segue:

from django.db import models


class MyModel(models.Model):
    ...

    class Meta:
        ...

La classe Meta può essere utilizzata per definire varie cose sul modello come i permessi, il nome del database, i nomi singolari e plurali, l’astrazione, l’ordinamento e così via. L’aggiunta di classi Meta ai modelli Django è del tutto facoltativa.

Questa classe include anche molte opzioni che puoi configurare. Le seguenti sono alcune delle meta opzioni comunemente usate; puoi esplorare tutte le meta opzioni qui

Django Meta Option - Abstract

Questa opzione viene utilizzata per definire se il modello è astratto o meno; funzionano come le classi astratte. Le classi astratte sono quelle che non possono essere istanziate e possono essere solo estese o ereditate.

I modelli impostati come abstract possono essere solo ereditati. Si può usare questa opzione se ci sono più modelli con campi comuni.

from django.db import models


class Human(models.Model):
    genders = (
        ("M", "Male"),
        ("F", "Female"),
        ("NB", "Non-binary"),
        ("T", "Transgender"),
        ("I", "Intersex"),
        ("O", "Other"),
        ("PNTS", "Prefer not to say"),
    )

    name = models.CharField(max_length=200)
    age = models.IntegerField(default=0)
    gender = models.CharField(max_length=50, choices=genders)

    class Meta:
        abstract = True  # Important


class Teacher(Human):
    subject = models.CharField(max_length=200)


class Student(Human):
    grade = models.IntegerField(default=0)

Qui, i modelli Teacher e Student avranno tutti i campi all’interno del modello Human. All’interno del database verranno creati solo i modelli Teacher e Student.

Django Meta Opzione - db_table

Questa opzione viene utilizzata per impostare il nome che deve essere utilizzato per identificare la tabella all’interno del database. Ad esempio: se faccio qualcosa come segue, il nome del mio modello sarà job nel database.

from django.db import models


class JobPosting(models.Model):
    class Meta:
        db_table = "job"

Django Meta Opzione - Ordinazione

Questa opzione accetta un elenco di valori stringa, che sono campi modello. Viene utilizzato per definire l’ordine degli oggetti di un modello. Quando gli oggetti di questo modello vengono recuperati, saranno presenti in questo ordinamento.

from django.db import models


class JobPosting(models.Model):
    dateTimeOfPosting = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ["-dateTimeOfPosting"]

Nell’esempio sopra, gli oggetti recuperati verranno ordinati in base al campo dateTimeOfPosting in ordine decrescente. (Il prefisso - è usato per definire un ordinamento decrescente.)

Django Meta Opzione - verbose_name

Questa opzione viene utilizzata per definire un nome singolare leggibile dall’uomo per un modello e sovrascriverà la convenzione di denominazione predefinita di Django. Questo nome si rifletterà anche nel pannello di amministrazione (/admin/).

from django.db import models


class JobPosting(models.Model):
    class Meta:
        verbose_name = "Job Posting"

Django Meta Opzione - Verbose_name_plural

Questa opzione viene utilizzata per definire un nome plurale leggibile dall’uomo per un modello, che di nuovo sovrascriverà la convenzione di denominazione predefinita di Django. Questo nome si rifletterà anche nel pannello di amministrazione (/admin/).

from django.db import models


class JobPosting(models.Model):
    class Meta:
        verbose_name_plural = "Job Postings"
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Articolo correlato - Django Model