Skip to content

Forms & Admin#

Form Definition#

from django import forms

class ContactForm(forms.Form):
    name = forms.CharField(max_length=100)
    message = forms.CharField(widget=forms.Textarea)

ModelForm Definition#

from django import forms
from .models import Post

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['title', 'body', 'category']

Form View Handling#

def contact_view(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            # Process data
            return redirect('success')
    else:
        form = ContactForm()
    return render(request, 'contact.html', {'form': form})

Admin Registration#

# admin.py
from django.contrib import admin
from .models import Post

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'created_at', 'is_published')
    list_filter = ('is_published', 'category')
    search_fields = ('title', 'body')
    prepopulated_fields = {'slug': ('title',)}

Format HTML in Admin#

from django.utils.html import format_html

class PostAdmin(admin.ModelAdmin):
    def colorful_title(self, obj):
        return format_html('<span style="color: blue;">{}</span>', obj.title)