限制Django表中的行数
我的模型文件中有一个表,我想将其设计为表中最多有十行。超过限制时,将删除最旧的行。对于某些上下文,这是前端的一个显示,向用户显示他们访问过的十个最新链接。我是Django的新手,所以如果有人对如何做到这一点提出建议,我将不胜感激 您可以编写一个自定义的限制Django表中的行数,django,django-models,Django,Django Models,我的模型文件中有一个表,我想将其设计为表中最多有十行。超过限制时,将删除最旧的行。对于某些上下文,这是前端的一个显示,向用户显示他们访问过的十个最新链接。我是Django的新手,所以如果有人对如何做到这一点提出建议,我将不胜感激 您可以编写一个自定义的save方法来检查YourObject.objects.all()的长度,然后在长度等于10时删除最旧的一个 大致如下: def save(self, *args, **kwargs): if YourModel.objects.count
save
方法来检查YourObject.objects.all()
的长度,然后在长度等于10时删除最旧的一个
大致如下:
def save(self, *args, **kwargs):
if YourModel.objects.count() == 10:
objects[0].delete()
super(YourModel, self).save(*args, **kwargs)
在我看来,你可以使用。A在这种情况下。这样,就可以将对象创建和删除逻辑分开 由于您希望删除
最旧的
,因此我假设您在模型中创建了一个字段
一旦保存
def my_handler(sender, instance, **kwargs):
qs = MyModel.objects.order_by('created') #ensure ordering.
if qs.count() > 10:
qs[0].delete() #remove the oldest element
class MyModel(models.Model):
title = models.CharField('title', max_length=200)
created = models.DateTimeField(auto_add_now=True, editable=False)
post_save.connect(my_handler, sender=MyModel)
当然,没有什么可以阻止您使用该信号,但只有在您绝对确信save
方法不会失败的情况下才可以使用它 最好使用objects.count()?