对于这些模型:
class Publisher(models.Model):
name = models.CharField(max_length=30)
code = models.SmallIntegerField(unique=True)
class Book(models.Model):
date = models.DateField(auto_now_add=True)
publisher = models.ForeignKey(Publisher)
hardback = models.BooleanField()
large_print = models.BooleanField()
foreign_lang = models.BooleanField()
对于每个布尔字段,我想让发布者按该字段的百分比和总图书数进行排序。
例如
出版商 - 百分比大字体 - 书籍总数
我有模型方法Publisher.get_percentage和Publisher.total_count,它们在提供日期范围(d1,d2)和相关的布尔字段(选择)时计算这些。
d1和d2将由用户从表格中选择。
我正在研究这样的观点:
def data(request):
if request.method == 'POST':
form = DateForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
choices = ['publisher__hardback','publisher__large_print','publisher__foreign_lang']
for choice in choices:
ch = {}
pub = Publisher.objects.all()
for p in pub:
ch = {p.code : p.total_count : p.get_percentage(cd.d1, cd.d2, choice)}
为每个选项创建新词典的最佳方法是什么,并将值附加到词典中?
我认为我需要在视图中创建这些词典(而不是仅仅在模板中迭代发布者),因为我想按百分比排序结果......
有没有更好的方法来实现这一切?!
由于