Formulario que no dependera directamente de un modelo

modelo departamento

models.py

from django.db import models

# Create your models here.
class Departamento(models.Model):
    name = models.CharField('Nombre', max_length=50,)
    shor_name = models.CharField('Nombre Corto', max_length=20, unique=True)
    anulate = models.BooleanField('Anulado', default=False)

    def __str__(self):
        return str(self.id) + '-' + self.name + '-' + self.shor_name

views.py

from django.shortcuts import render
from django.views.generic import ListView
from django.views.generic.edit import FormView

from applications.persona.models import Empleado
from .models import Departamento
from .forms import NewDepartamentoForm


class NewDepartamentoView(FormView):
    template_name = 'departamento/new_departamento.html'
    form_class = NewDepartamentoForm
    success_url = '/'

    def form_valid(self, form):
        print('******estamos en el forma vlid*******')
        # creamos una instancia del modelo Departamento

        depa = Departamento(
            name=form.cleaned_data['departamento'],    #name es el atributo de Departamento, 'departamento' es el atributo de NewDepartamentoForm
            shor_name=form.cleaned_data['shorname']    #shor_name es el atributo de Departamento, 'shor_name' es el atributo de NewDepartamentoForm
        )
        depa.save()    #guardar en la bd

        nombre = form.cleaned_data['nombre']    # validando campos del modelo NewDepartamentoForm
        apellido = form.cleaned_data['apellidos']
        Empleado.objects.create(  #creamos un registro
            first_name=nombre,    #first_name es el campo del modelo Empleado
            last_name=apellido,   #last_name es el campo del modelo Empleado
            job='1',              #job es el campo del modelo Empleado
            departamento=depa     #asignamos depa al campo departamento del modelo Empleado
        )
        return super(NewDepartamentoView, self).form_valid(form)

forms.py

creamos nuestro formulario

from django import forms

class NewDepartamentoForm(forms.Form):
    nombre = forms.CharField(max_length=50)
    apellidos = forms.CharField(max_length=50)
    departamento = forms.CharField(max_length=50)
    shorname = forms.CharField(max_length=20)

urls.py

from django.contrib import admin
from django.urls import path

from . import views

app_name = "departamento_app"

urlpatterns = [
    path(
        'new-departamento/',
        views.NewDepartamentoView.as_view(),
        name='nuevo_departamento'
    ),
]

templates/persona/add.html


<div class="grid-container">
    <div class="grid-x">
        <h1 class="cell">Regitrar Departamento</h1>
        <form class="cell callout grid-x grid-margin-x" method="POST">{% csrf_token %}
            <div class="medium-6 cell">
                <label>Nombres:
                  {{form.nombre}}
                </label>
            </div>
            <div class="medium-6 cell">
                <label>apellidos
                    {{form.apellidos}}
                </label>
            </div>
            <div class="medium-6 cell">
                <label>departamento
                    {{form.departamento}}
                </label>
            </div>
            <div class="medium-6 cell">
                <label>shorname
                    {{form.shorname}}
                </label>
            </div>
            <div class="medium-12 cell">
                <button type="submit" class="button">Guardar</button>
            </div>
        </form>
    </div>
</div>