无法在 django 中找出正确的 json 查询集

Posted

技术标签:

【中文标题】无法在 django 中找出正确的 json 查询集【英文标题】:Cant figure out right queryset for json in django 【发布时间】:2017-12-29 22:51:45 【问题描述】:

我需要帮助来获取 django 查询,我的 json 文件应该在哪里获取此数据作为输出。我尝试了很多方法,但我只是一点一点地而不是完全地得到它。我是 Django 的新手,并且坚持了很长时间。请帮忙。谢谢:)

[
  "Group": "Mars",
  "count": 10,
  "Months": "June"
, 
  "Group": "Jupiter",
  "count": 50,
  "Months": "June"
, 
  "Group": "Mars",
  "count": 70,
  "Months": "July"
, 
  "Group": "Jupiter",
  "count": 60,
  "Months": "July"
, 
  "Group": "Mars",
  "count": 30,
  "Months": "August"
, 
  "Group": "Jupiter",
  "count": 40,
  "Months": "August"
];

我可能试图在我的views.py中计算火星和木星的数量,如下所示,它将json作为['Group':'Mars','count':10,'Group':'Jupiter','count':50]现在添加了几个月,这是我没有得到的,而'months'在charfield中。

views.py

fm_ds=Details.objects.filter(Group='Jupiter',Div='Cross',Shift='Day').count()
    m_ds=Details.objects.filter(Group='Mars',Div='Cross',Shift='Night').count()
    Jupiter_dict=
    Jupiter_dict['Group']='Jupiter'
    Jupiter_dict['count']=fm_ds
    Mars_dict=
    Mars_dict['Group']='Mars'
    Mars_dict['count']=m_ds
    print Jupiter_dict
    print Mars_dict
    details_dict=[Mars_dict,Jupiter_dict]
context = 'data_json': json.dumps(details_dict)

models.py 是

class Details(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    Div=models.CharField(max_length=200,blank=True, null=True, default=None)
    Group =models.CharField(max_length=200,blank=True, null=True, default=None)
    Shift =models.CharField(max_length=200,blank=True, null=True, default=None)
    Months=models.CharField(max_length=200,blank=True, null=True, default=None)

【问题讨论】:

“计数”是特定月份特定组的总数? 是的,这是特定组中白天/夜班工作的人数! @ThiagoRossener 你能展示你的模型吗? @zaidfazil 我的模型已添加。 【参考方案1】:

你可以用annotate函数来做到这一点,比如,

Details.objects.values('Group', 'months').annotate(count=Count('Group')).order_by('months')

输出将是,

<QuerySet ['count': 5, 'months': 'December', 'Group': 'group1',
    'count': 3, 'months': 'December', 'Group': 'group3',
    'count': 10, 'months': 'June', 'Group': 'group1', 
    'count': 10, 'months': 'May', 'Group': 'group1', 
    'count': 6, 'months': 'May', 'Group': 'group3']>

计数是特定月份组中的人数,与他们工作的Shift 无关。

希望,这就是你要找的,

【讨论】:

我也希望它们与 Shift 相关。就像在白班工作的“木星”小组一样。计数是 6 月份的 50 个,7 月份的 60 个和 8 月份的 40 个。你能帮我解决这个问题吗?! @zaidfazil 数据的打印方式应该与我的 json 出现的方式完全相同!六月的火星和木星。火星和木星 7 月份等等 您可以添加一个order_by 子句,为此。 谢谢:) 明白了!:) 您能帮我一个忙,然后将答案标记为选中吗?

以上是关于无法在 django 中找出正确的 json 查询集的主要内容,如果未能解决你的问题,请参考以下文章

将 Django 对象传递给 ExtJS 的正确方法

无法正确查询(MSSQL - PHP - JSON)

Django 模板未正确格式化 <pre> 标签

Django 将带有外键的查询集转换为 JSON

MYSQL JSON 选择查询每次运行都会返回不同的结果

如何将 django 变量正确转换为模板中的 json