Retrieving column name in Django Models

Question:

How do I retrieve names of the columns of a table in MySQL using Models in Django?

If I were using a MySQLdb API. I could have done it using the following:

cur = connection.cursor()
for k in cur.description:
    print k[0]

But I don’t want to do it in the above manner.

I have the following defined in models.py

class Third(models.Model):
    studentname = models.CharField(max_length=90)
    rollnumber = models.CharField(max_length=30, primary_key=True)
    college = models.CharField(max_length=120)

My output should list “studentname”, “rollnumber”,”college”

Asked By: garak

||

Answers:

Listing the fields of your ‘Third’ model class in python2:

for field in Third._meta.fields:
  print field.name

And python3:

print("Third fields:")
for field in Third._meta.fields:
    print( f"- {field.name}" )
Answered By: Geoffrey Wiseman

Something like this would also cover ForeignKey fields and manually-specified column names.

print(f'{"Field name":20} {"Column name"}')
print(50 * '-')
for f in Third._meta.fields:
    print(f'{f.name:20} {f.db_column or f.attname}')
Answered By: m000
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.