Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于模型方法结果的django字典_Django_Python 2.7 - Fatal编程技术网

用于模型方法结果的django字典

用于模型方法结果的django字典,django,python-2.7,Django,Python 2.7,对于这些型号: 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(Publi

对于这些型号:

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)和相关布尔字段(choice)时计算这些值

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)}
为每个选项创建新词典并将值附加到词典中的最佳方法是什么

我想我需要在视图中创建这些词典(而不是在模板中遍历发布者),因为我想按百分比排序结果

有没有更好的方法来实现这一切


谢谢

你写的代码太多了。找到一个满足您需要的查询(提示:聚合)。您的意思是这样的?