"""Database objects for storing Markov chains.""" import logging from django.db import models log = logging.getLogger(__name__) class MarkovContext(models.Model): """Define contexts for Markov chains.""" name = models.CharField(max_length=200, unique=True) def __str__(self): """String representation.""" return "{0:s}".format(self.name) class MarkovState(models.Model): """One element in a Markov chain, some text or something.""" start1 = '__start1' start2 = '__start2' stop = '__stop' k1 = models.CharField(max_length=256) k2 = models.CharField(max_length=256) v = models.CharField(max_length=256) count = models.IntegerField(default=0) context = models.ForeignKey(MarkovContext, on_delete=models.CASCADE) class Meta: index_together = [ ['context', 'k1', 'k2'], ['context', 'v'], ] unique_together = ('context', 'k1', 'k2', 'v') def __str__(self): """String representation.""" return "{0:s},{1:s} -> {2:s} (count: {3:d})".format(self.k1, self.k2, self.v, self.count)