我想将模型的记录限制 for each 用户最多10行(模型具有用户模型的外部键).最佳做法是什么?
我考虑过重写保存方法,执行判断,并在保存之前删除:
def save(self, *args, **kwargs):
if MyModel.objects.filter(user=self.user).count() >= 10:
oldest_record = MyModel.objects.filter(user=self.user).order_by('created_at').first()
oldest_record.delete()
super().save(*args, **kwargs)
但我想知道这是否是一个好的解决方案,在数据库级别执行是否更好(以及如何实现它),以及当同一用户同时保存两个实例时潜在的问题(尽管不太可能).有类似的经历吗?