I would try to keep the same model and conditionally define the fields e.g.
if connection.vendor == 'postgresql':
from django.contrib.postgres.search import SearchVectorField
else:
SearchVectorField = object
# Create your models here.
class MyModel(models.Model):
original_text = models.TextField()
stemmed_text = SearchVectorField()
I don’t know how exactly you would like to handle VIRTUAL tables on SQLite, so my advice may not be the best.