Math_kv
Math_kv

Reputation: 319

Add view in the bottom of Django modeladmin

I have a blog made with Django where I write posts in markdown. I would like to add a view in the bottom of the admin page for each instance of the class Entry (my blog post class) such that I can get a preview of what the markdown looks like, while I'm writing. Just as you get a preview here on Stack Overflow when you create a new post.

I already have an admin class extending ModelAdmin:

class EntryAdmin(admin.ModelAdmin):
   list_display = ('title','created')
   prepopulated_fields = {'slug': ('title',)}

Is it possible to modify ModelAdmin further, such that it loads a certain html file (blogpost.html) and shows it in the bottom of the admin page?

I made a picture to show exactly what I mean:

enter image description here

NB: I know there are various tools such as Django admin plus, that allows one to add views to the admin interface, but not for each instance of an object.

Upvotes: 1

Views: 471

Answers (1)

Astik Anand
Astik Anand

Reputation: 13057

You can use markdownx for that:

pip install django-markdownx

project settings.py

INSTALLED_APPS = 
    #. . . .
    'markdownx',
]

project urls.py

urlpatterns = [
    #[...]
    url(r'^markdownx/', include('markdownx.urls')),
]

and then collect static files.

python3 manage.py collectstatic

your models.py

from markdownx.models import MarkdownxField

class MyModel(models.Model):
    myfield = MarkdownxField()

your app admin.py

from django.contrib import admin
from markdownx.admin import MarkdownxModelAdmin
from .models import MyModel


admin.site.register(MyModel, MarkdownxModelAdmin)

This should work.

Upvotes: 1

Related Questions