У меня проблемы с поиском лучшего способа переопределить и добавить пользовательский html в форму редактирования / добавления модели на моем Django сайте администратора.
Вот две модели, которые здесь задействованы:
- Модель значка, используемая для хранения значков «Font Awesome»:
class Icon(models.Model):
name = models.CharField(max_length=100, null=False)
style = models.CharField(max_length=10, choices=STYLE_CHOICES, null=False)
retired = models.BooleanField(default=False)
def delete(self):
self.retired = True
self.save()
objects = NotRetiredManager()
objects_deleted = DeletedManager()
def __str__(self):
return self.name
- Модель рабочей книги, которая содержит ссылку на внешний ключ для вышеуказанной модели значка:
class Workbook(models.Model):
client = models.ForeignKey(Client, on_delete=models.SET_NULL, null=True)
icon = models.ForeignKey(Icon, on_delete=models.SET_NULL, null=True, blank=True)
name = models.CharField(max_length=100)
workbookLink = models.CharField(max_length=1000)
retired = models.BooleanField(default=False)
def delete(self):
self.retired = True
self.save()
objects = NotRetiredManager()
objects_deleted = DeletedManager()
def __str__(self):
return self.name
Вот переопределенные модели администратора для вышеуказанных моделей:
class BaseAdmin(AdminImageMixin, admin.ModelAdmin):
def delete_queryset(self, request, queryset):
for obj in queryset:
obj.delete()
@admin.register(Workbook)
class WorkbookAdmin(BaseAdmin):
list_display = ("name", "client")
list_filter = (NameFilter, ClientNameFilter)
ordering = ("name", )
@admin.register(Icon)
class IconAdmin(BaseAdmin):
fields = ("name", "style", "icon_display")
list_display = ("icon_display", "name", "style" )
list_display_links = ("icon_display", "name")
list_filter = (NameFilter, )
ordering = ("name", )
def icon_display(self, obj):
return mark_safe(f'<i class="{obj.style}{obj.name}"></i>')
readonly_fields = ["icon_display"]
Вот отображение списка некоторых значков, которые есть в моей базе данных:
В настоящее время страница добавления / редактирования рабочей книги на моем административном сайте выглядит следующим образом:
Я бы хотела, чтобы этот раскрывающийся список был в эту секунду настраиваемый снимок экрана, аналогичный столбцу «Отображение значков» на этом первом снимке экрана, чтобы пользователь мог выбирать из графического списка значков в отличие от формы поля выбора по умолчанию, содержащей имена значков.
Я просмотрел Django документы, а также аналогичные вопросы о Например, Подобный вопрос о переполнении стека ; Тем не менее, я не совсем понимаю, как правильно реализовать нечто подобное.
Я надеюсь, что предоставленная мною информация о моем приложении полезна. Пожалуйста, дайте мне знать, если вы хотите, чтобы я предоставил какую-либо дополнительную информацию или добавил какие-либо пояснения!