Сделать страницу объекта администратора Django меньше?
В настоящее время я пытаюсь сделать так, чтобы страница элемента в админке django (т.е. /admin/dictionary/word/153/change) отображалась меньше, я просто не знаю, как это сделать.
Учитывая, что любое случайное слово может иметь, скажем, 10000 upvotes, требуется некоторое время, чтобы оно действительно попало на страницу, когда она загружается. Поэтому не нужно показывать голоса?
Это мой admin.py и мои модели.
from django.contrib import admin
from diccionario.models import Palabra, Tag
from django.utils.safestring import mark_safe
class TagInline(admin.TabularInline):
model = Tag
def has_change_permission(self, request, obj=None):
return False
def has_add_permission(self, request, obj=None):
return False
class PalabraAdmin(admin.ModelAdmin):
list_display = (
'nombre',
'get_post_action',
'definicion',
'ejemplo',
'gramatica',
'get_sinonimos',
'get_antonimos',
'pais',
'creado',
'get_user_username',
'aprobada',
'anonimo'
)
list_filter = (
'creado',
)
inlines = [TagInline]
def get_sinonimos(self, obj):
return ', '.join([item.nombre for item in obj.tag_set.filter(tag_type='Sinónimo')])
def get_antonimos(self, obj):
return ', '.join([item.nombre for item in obj.tag_set.filter(tag_type='Antónimo')])
def get_user_username(self, obj):
if obj.user:
return obj.user.username if obj.user.username else obj.user.email
def get_post_action(self, obj):
return mark_safe('<a class="btn btn-primary" href="/api/admin/aprobar/%s">Aprove</a>'
'<div style="margin: 5px 0"></div>'
'<a class="btn btn-danger" href="/api/admin/borrar/%s">Borrar</a>'
'<div style="margin: 5px 0"></div>' % (
obj.id,
obj.id,
))
get_sinonimos.short_description = 'Sinónimos'
get_antonimos.short_description = 'Antónimos'
get_user_username.short_description = 'username'
get_post_action.short_description = 'action'
admin.site.register(Palabra, PalabraAdmin)
А вот models.py
import re
from django.db import models
from accounts.models import CustomUser
class IpAddress(models.Model):
creado = models.DateTimeField(auto_now_add=True)
ip_address = models.GenericIPAddressField(unique=True)
class Palabra(models.Model):
nombre = models.TextField(max_length=250)
definicion = models.CharField(max_length=1000, unique=True)
ejemplo = models.CharField(max_length=250)
creado = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(CustomUser, on_delete=models.SET_NULL, null=True, blank=True)
anonimo = models.BooleanField(default=True)
aprobada = models.BooleanField(default=False)
userUpVotes = models.ManyToManyField(IpAddress, blank=True, related_name='threadUpVotes')
userDownVotes = models.ManyToManyField(IpAddress, blank=True, related_name='threadDownVotes')
gramatica = models.CharField(max_length=250, null=True, blank=True)
pais = models.CharField(max_length=250, null=True, blank=True)
В основном я хочу, чтобы userUpvotes и userDownvotes теперь отображались на странице объекта в админке слова. Но не уверен, где мне редактировать этот шаблон? Или он находится в файле admin.py?
Или уберите секции, показывающие все объекты IpAddressObjects на этом изображении
После рекомендации BrianDestura я смог обновить свои модели администратора, добавив строку исключения, как показано ниже
class PalabraAdmin(admin.ModelAdmin):
list_display = (
'nombre',
'aprobada',
'anonimo',
'get_post_action',
'definicion',
'ejemplo',
'gramatica',
'get_sinonimos',
'get_antonimos',
'pais',
'creado',
'get_user_username',
)
list_filter = (
'creado',
)
inlines = [TagInline]
exclude = ("userUpVotes", "userDownVotes")