我正在使用Python Django。我想要一个动态主页。确切地说,我想显示不同的书籍清单。例如,一个清单可能是畅销书,而另一个清单可能是旧书。这些列表可以在将来添加,我需要它们是动态的。每个列表都有一个标题和一个与该列表中的书相对应的查询集。处理此问题的最佳做法是什么?我的List模型的属性应该是什么?
问题是我不想每次可能都有新列表时都更改前端设计。这些列表应该是动态的。例如,我可能想添加一个新列表,比如说2018年前,我知道查询集是什么。我想要一个模型,使得该模型的每个实例都与这些列表之一相对应,然后我唯一需要做的就是创建一个具有查询集和列表标题的新实例。然后,我希望我的网站在有人要求获得主页时返回所有这些列表。
答案 0 :(得分:0)
您应该将自定义查询集放在your model's manager中。
答案 1 :(得分:-1)
我写了一个玩具示例,希望这会有所帮助
from django.db import models
class Books(models.Model):
name = models.CharField(max_length=20)
best_sellers = models.BooleanField()
from django.shortcuts import render_to_response
from book.models import Books
def book_page(request):
books = Books.objects.all()
return render_to_response('book_page.html',locals())
<!doctype html>
<html>
<head>
<title> Book lists </title>
<meta charset='utf-8'>
</head>
<body>
{% for b in books %}
{% if b.best_sellers %}
<h2>{{ b.name }}</h2>
{% else %}
<h3>{{ b.name }}</h3>
{% endif %}
{% endfor %}
</body>
</html>
答案 2 :(得分:-1)
对不起,我不会为您提供任何代码,因为我不会为您完成工作。我建议您考虑一下如何设计数据库。
例如,您是否只需要一种具有所有书籍的模型,而不要具有几个字段来指示它是“畅销书”还是被视为“旧书”。
因此,在这种情况下,要查找“旧书”,您可能需要一个timestamp字段,然后运行一个查询,将经过某个日期的书视为旧书。那可能是一个清单。
对于畅销书,您可以在布尔字段中自行说明该书是否是畅销书。然后,您可以根据该布尔字段运行查询过滤。那可能是另一个列表。
因此,请考虑一下您想要的确切列表是什么,以及如何有效地对此进行查询。