Мне нужно быстро найти слова для веб-приложения, которое я пишу в Django.Я думал о том, чтобы поместить каждый символ слова в отдельное целое поле, индексированное по позиции.
class Word(models.Model):
word = models.CharField(max_length=5)
length = models.IntegerField()
c0 = models.IntegerField(blank=True, null=True)
c1 = models.IntegerField(blank=True, null=True)
c2 = models.IntegerField(blank=True, null=True)
c3 = models.IntegerField(blank=True, null=True)
c4 = models.IntegerField(blank=True, null=True)
mapping = [c0, c1, c2, c3, c4,]
def save(self):
self.length = len(self.word)
for (idx, char) in enumerate(self.word):
self.mapping[idx] = ord(char)
models.Model.save(self)
Затем я мог бы сделать запрос, например Word.objects.filter(length=4, mapping[2]=ord('A'))
, чтобы найти все слова длины четыре, имеющие Aв третьей позиции.
Я не совсем уверен в дизайне и некоторых механиках, поэтому я подумал, что буду просить здесь предложения, прежде чем я попытаюсь их реализовать.Я не совсем уверен в синтаксисе для выполнения запросов.
Итак, я думаю, что вопросы будут
- У вас есть какие-либо предложения по дизайну?
- Будет ли
mapping[2]
работать? - Смогу ли я передать словарь команде фильтра, чтобы иметь переменное число аргументов ключевого слова?
Спасибо!