No, non lo è.
Pensaci, dove ti serviranno?
-
Non quando crei il modello: sai quale modello stai creando.
-
Non all'interno del modello stesso: sai anche dove sei.
-
Né quando accedi al modello in un secondo momento: conosci ancora il tipo del modello, a meno che non ti interessi del tipo, in tal caso i prefissi saranno solo un fastidio.
Immagina un modello come:
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
% co_de avrebbe più senso di person.person_first_name
? person.first_name
conterrà mai un Person
che non è il primo nome della persona, quindi finirai per esempio con:
class Person(models.Model):
person_first_name = models.CharField(max_length=30)
person_last_name = models.CharField(max_length=30)
persons_husband_first_name = models.CharField(max_length=30)
persons_first_child_first_name = models.CharField(max_length=30)
persons_pet_first_name = models.CharField(max_length=30)
administrator_first_name = models.CharField(max_length=30)
Potresti aver già visto questo codice, ma un codice come questo è indicativo di un completo fraintendimento di OOP da parte dell'autore.
Un altro aspetto da considerare è ereditarietà . Potresti avere:
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class Employee(Person):
pass
class Freelancer(Person):
pass
Seguendo la convenzione in cui i membri del modello hanno il prefisso del nome della classe, finirai con aspettarti first_name
, ma troverai employee.employee_first_name
, che è contro-intuitivo. Se inizi a sovrascrivere i membri, le cose diventano ancora più confuse.
Infine, se hai bisogno di una fonte più autorevole, più specifica per i modelli di Django, guarda la documentazione . L'esempio sopra è copiato da questo. Vedrai che anche altri esempi non hanno prefissi del genere.