在Django模板中以嵌套格式渲染和使用自引用模型对象,而不重复

kognpnkq  于 2023-06-25  发布在  Go
关注(0)|答案(1)|浏览(129)

希望你一切都好…
我对在html模板中使用自引用模型对象有一点误解。

models.py

class MyNumber(models.Model):
    has_bro = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
    numb = models.CharField(max_length=10)

    def __str__(self) -> str:
        return self.numb

views.py

def index(request):
    context = {
        'numbers': MyNumber.objects.all()
    }    
    return render(request, 'test_folder/test_file.html', context)

假设我有像1这样的对象,它也有像1.1和1.2这样的引用对象。为了使它更复杂,让我们添加更多的对象,如1.1.1和1.1.2,它们引用1.1。
问题是如何使用<ul></ul> HTML标记以嵌套格式获取所有对象,而不重复,例如:

* 1
   * 1.1
      * 1.1.1
      * 1.1.2
   * 1.2

到目前为止,我用我的一点知识得到了这个结果(如下):

* 1
   * 1.1
   * 1.2
* 1.1
   * 1.1.1
   * 1.1.2
* 1.2

帮助是赞赏!

svmlkihl

svmlkihl1#

你寻求的答案不仅仅是使用django模型的操作,它本身就有FK。看起来你需要实现一些树,这不是一个容易的技术任务。根据您的需求,如所需的性能等,您可能希望实现自己的解决方案或使用已经实现的解决方案。之前有一个后藤解决方案叫做django mptt,但是看起来已经被放弃了。无论在他们的github页面(https://github.com/django-mptt/django-mptt)上,他们都有有用的链接。这篇文章将是一个很好的起点,让你去-https://406.ch/writing/django-tree-queries/

相关问题