我在我的模型文件中有一个表,我想设计它,使表中的行数限制为10行。超过限制时,将删除最老的行。对于某些上下文,这是用于前端显示,显示用户最近访问的10个链接。我对Django很陌生,所以如果有人对如何做这件事有建议的话,我会非常感激的!
发布于 2013-08-08 20:47:22
在我看来,您可以使用信号。在这种情况下是post_save。这样,就可以将对象创建和删除逻辑分开。
由于您希望删除oldest,所以假设您在模型中有一个created字段。
一旦你save,
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)当然,没有什么可以阻止您使用pre_save信号,但是只有当您绝对确信save方法不会失败时才使用它。
https://stackoverflow.com/questions/18135496
复制相似问题