Add and style selected fields separately

Instead of using the default as_p method to render form fields, you can add them separately in the template. This will enable you to format and position each field according to your specific requirements.

forms.py

This is the same form we've already used in our project

from django import forms
from django.contrib.auth.forms import UserChangeForm
from django.contrib.auth.models import User
from tinymce.widgets import TinyMCE
from captcha.fields import CaptchaField

from .models import DBSpecies, DBFossil, Profile, DBFossilGathering, DBEvent, FossilEvent

class FormSpecies(forms.ModelForm):
    captcha = CaptchaField()
    class Meta:
        model = DBSpecies
        fields = "__all__"
        exclude = ("species_owner", )
        widgets = {
            'species_name':forms.TextInput(attrs={'class':'form-control', 'placeholder':'Species name (required)'}),
            'species_image':forms.FileInput(attrs={'class':'form-control'}),
            'species_description':forms.Textarea(attrs={'class':'form-control'}),
            'species_is_archived':forms.CheckboxInput(attrs={'class': 'form-check-input'}),
        }
    
    def __init__(self, user, *args, **kwargs):
        super(FormSpecies, self).__init__(*args, **kwargs)

species_add.html template