how could I use Model._meta.get.fields() to read all fields in my model

Viewed 1223

I want to display some fields and I know I could do it by as follows:

In models.py:

class Person(models.Model):
    person_id = models.UUIDField(default=uuid.uuid4, primary_key = True)
    date_registered = models.DateField(auto_now_add=True)   
    first_name = models.CharField(max_length = 50)
    last_name = models.CharField(max_length = 100)
    date_of_birth = models.DateField() 
    email = models.EmailField()

In my admin.py:

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('last_name', 'first_name', 'last_name', 'date_of_birth' )
    fields = [('first_name' ,'last_name'), 'date_of_birth']
    pass
admin.site.register(Author, AuthorAdmin)

Unfortunately, my table has many fields and I do not want to write them individually. I found that ._meta.get.fields() could read all fields. However, I can not get it correct. Using it as follows in my admin.py:

admin.site.register(PersonLogin)
admin.site.register(LoginHistory)

class PersonAdmin(admin.ModelAdmin):
    list_display = [field.name for field in Person._meta.get_fields() if not field.primary_key]  
    readonly_fields = ('person_id',)
    pass

admin.site.register(Person, PersonAdmin)

it says that _meta is undefined variable.

Latest Django in use.

Thank you in advance. PG

1 Answers
Related