Да, попытка определить следующий идентификатор откуда-то не будет переносимой. Еще проще, чем использовать сигналы, добавить что-то подобное в ваш метод сохранения:
def save(self, *args, **kwargs):
"""Save method for Question model"""
if not self.id:
super(Question, self).save(*args, **kwargs)
# Fill the index field
self.index = self.id # plus whatever else you need
return super(Question, self).save(*args, **kwargs)
Полагаю, вам придется пойти по этому пути, если вы не можете полностью получить идентификатор объекта из строки, которую вы получаете в качестве входных данных для фильтра. Но если ваша строка где-нибудь "{id} -something-else", то было бы лучше избавиться от поля индекса и извлечь значение id из строки с помощью регулярного выражения, а затем отфильтровать непосредственно по id с помощью Questions.objects. фильтр (ID = ID)