Дирк, вы должны внести некоторые изменения в модель (если это допустимо), как сказал Игнасио .Итак, ModelA
теперь должно выглядеть примерно так:
class ModelA(models.Model):
key = models.PositiveIntegerField()
fk = models.ForeignKey(ModelB)
def Meta(self):
unique_together = ("key", "fk")
def save(self, *args, **kwargs):
key = cal_key(self.fk)
self.key = key
super(ModelA, self).save(*args, **kwargs)
Как вы видите, у меня есть overridden the default save method
для вычисления значения ключа из метода cal_key
, принимающего fk as argument
.Итак, определите следующий метод cal_key
ниже в файле моделей.
def cal_key(fk):
present_keys = ModelA.objects.filter(fk=fk).order_by('-key').values_list('key',flat=True)
if present_keys:
return present_keys[0]+1
else:
return 0
Метод cal_key
четко указывает, что вам действительно нужно.