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"