Comment obtenir tous les noms de colonne d'une table avec Django ?

Created 13 novembre 2022 | Viewed 87 | by Benjamin Edit


Exemple de comment obtenir tous les noms de colonne d'une table avec Django ? (avec SQLite):

En utilisant Model _meta API

Pour obtenir tous les noms de champs d'une table avec Django, une solution consiste à utiliser Model _meta API:

table_name._meta.get_fields()

Par exemple, considérons une application appelée notebook avec une table nommée Article (models.py) :

class Article(models.Model):
    notebook = models.ForeignKey(Notebook, null=True, blank=True, default = None,on_delete=models.CASCADE)
    url = models.CharField(max_length=1000, unique=True)
    title = models.CharField(max_length=1000)
    content = models.TextField()
    removed = models.BooleanField(default=False)

Obtenir tous les noms de champ dans une vue

from notebooks.models import Article

for e in Note._meta.get_fields():
    print(e)

donne

  (<django.db.models.fields.AutoField: id>,
  <django.db.models.fields.related.ForeignKey: notebook>,
  <django.db.models.fields.CharField: url>,
  <django.db.models.fields.CharField: title>,
  <django.db.models.fields.TextField: content>,
 <django.db.models.fields.BooleanField: removed>)

Obtenir tous les noms de champs à l'aide du shell Django

Lancez le shell Django :

python manage.py shell

Entrez ensuite

from notebooks.models import Article

et

Article._meta.get_fields()

donne par exemple

  (<django.db.models.fields.AutoField: id>,
  <django.db.models.fields.related.ForeignKey: notebook>,
  <django.db.models.fields.CharField: url>,
  <django.db.models.fields.CharField: title>,
  <django.db.models.fields.TextField: content>,
 <django.db.models.fields.BooleanField: removed>)