如何向模型对象添加自动计数器?

2024-10-01 15:42:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有4个对象,但当我删除了一个,我显示了基于对象id不是对象的实际数量

模型对象

https://i.stack.imgur.com/QBbCV.png


Tags: 对象https模型comid数量pngstack
2条回答

添加要计数的函数

在models.py

        def add_counter(myModel):
              objects = myModel.objects.all()
              index = 1
              for obj in objects:
                  obj.counter = index
                  obj.save()
                  index += 1


       Class myModel(model.Models):
              counter = models.IntegerField(editable=False, default=0)

您看到的是对象的唯一标识符,即主键。即使从列表中间删除一个,它们也无法更改。这是为了让数据库知道哪些行需要一些外来的关键点

实际上,您应该使用MyStudent.objects.count()来获取对象的计数,如果这是您想要显示的

如果需要在用户界面上的表上有行号,则该信息不应存储在数据库中。相反,你应该这样做:

{% for student in my_student_list %}
    {{ forloop.counter }} # starting index 1
    {{ forloop.counter0 }} # starting index 0

    # Print what ever you want here..
{% endfor %}

所以Django已经为您提供了forloop.counterforloop.counter0帮助程序

有关buildin templatetags的更多信息,请阅读:https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#for

由于您似乎正在使用Django Admin来显示数据,因此本文可能会帮助您在那里添加行号:How to add a line number to each row of a tabularinline block

相关问题 更多 >

    热门问题