Можно например так:
from django.db import models
from django.db.models import Max
class Game(models.Model):
name = models.CharField(max_length=100)
class Question(models.Model):
game = models.ForeignKey(Game)
question = models.CharField(max_length=100)
order = models.PositiveSmallIntegerField(blank=True)
class Meta:
unique_together = [('game', 'order')] # нельзя создать для одной игры вопросы с одним и тем же порядковым номером
def save(self, *args, **kwargs):
if not self.order: # если порядковый номер не задан, то он выбирается автоматически
last = Question.objects.filter(game=self.game).exclude(id=self.id).aggregate(Max('order')).get('order__max')
if last:
self.order = last + 1
else:
self.order = 1
super(Question, self).save(*args, **kwargs)
Поле order можно не заполнять (blank=True), тогда при сохранении значение выставиться автоматически - следующий номер для выбранной игры.
Если нужно, чтобы автоматический order показывался при выборе game - придется делать AJAX.