0

models.py

class Company(models.Model):
    name = models.CharField(max_length=20)
    location = models.CharField(max_length=20)
    date_created = models.DateTimeField()

Admin.py

class CompanyAdmin(admin.ModelAdmin):
    list_display = [name, location, date_created]

admin.site.register(Company, CompanyAdmin)

Instead of writing write each one field list_display = [name, location, date_created], there is an way to get all fields in admin?

Seonghyeon Cho
  • 171
  • 1
  • 3
  • 11
  • Does this answer your question? [How to show all fields of model in admin page?](https://stackoverflow.com/questions/10543032/how-to-show-all-fields-of-model-in-admin-page) – Brian61354270 Apr 06 '20 at 16:40

2 Answers2

1

You can try this

Admin.py

from django.contrib import admin
from .models import *

def getFieldsModel(model):
    return [field.name for field in model._meta.get_fields()]

class CompanyAdmin(admin.ModelAdmin):
    list_display = getFieldsModel(Company)

admin.site.register(Company, CompanyAdmin)
Raul Larriega
  • 311
  • 2
  • 6
0

Try this if you have multiple tables related to each other with ForeignKey or ManyToManyField. This method will avoid the "one_to_many" and "many_to_many" the exception

models.py

from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()

class Publisher(models.Model):
    name = models.CharField(max_length=300)

class Book(models.Model):
    name = models.CharField(max_length=300)
    pages = models.IntegerField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
    rating = models.FloatField()
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)
    pubdate = models.DateField()

class Store(models.Model):
    name = models.CharField(max_length=300)
    books = models.ManyToManyField(Book)

add method in admin.py file

def getFieldsModel(model):
    fields = [field.name for field in model._meta.get_fields() if field.many_to_many != True and field.one_to_many != True]
    return fields

Eg.

admin.py

from django.contrib import admin
from .models import Author, Publisher, Book, Store
# Register your models here.

# method to find model's all fields exluding one_to_many and many_to_many to avoide the <SystemCheckError>
def getFieldsModel(model):
    fields = [field.name for field in model._meta.get_fields() if field.many_to_many != True and field.one_to_many != True]
    return fields


class AuthorAdmin(admin.ModelAdmin):
    list_display = getFieldsModel(Author)
admin.site.register(Author, AuthorAdmin)


class PublisherAdmin(admin.ModelAdmin):
    list_display = getFieldsModel(Publisher)
admin.site.register(Publisher, PublisherAdmin)


class BookAdmin(admin.ModelAdmin):
    list_display = getFieldsModel(Book)
admin.site.register(Book, BookAdmin)


class StoreAdmin(admin.ModelAdmin):
    list_display = getFieldsModel(Store)
admin.site.register(Store, StoreAdmin)