当前位置: 首页 > 知识库问答 >
问题:

从Django模型筛选json数据

宋飞舟
2023-03-14

首先我创建一个管理员用户和两个模型

class Tcu
    user = models.ForeignKey(User)
    imei = models.CharField(max_length=30, unique=True)

class Position
    tcu = models.ForeignKey(Tcu)
    latitude = models.CharField(max_length=30)
    longitude = models.CharField(max_length=30)
    gps_date = models.CharField(max_length=20)
    speed = models.CharField(max_length=10, null=True, blank=True)
    heading = models.CharField(max_length=10, null=True, blank=True)

之后,我手动将我的管理员用户分配给两个TCU。

第一个Tcu有三个位置数据:

{"latitude": "21", "longitude": "21"}, {"latitude": "22", "longitude": "22"}, {"latitude": "23", "longitude": "23"}

第二个Tcu有两个位置数据:

{"latitude": "10", "longitude": "10"}, {"latitude": "11", "longitude": "11"}

之后,我创建一个视图,以获得两个TCU的最后位置。

def tcu_position(request):
        current_user_id = request.user.id
        tcu_pos = Position.objects.filter(tcu_id__user_id=current_user_id).values('latitude', 'longitude').order_by('-id')[:1:1]
        return JsonResponse ({'json_position_list': list(tcu_pos)})

结果是我只得到第二个TCU的最后一个位置:

{"latitude": "11", "longitude": "11"}

如何从第一个和第二个TCU获取最后一个位置?

共有1个答案

曹高轩
2023-03-14

如果我理解正确,您想要属于当前用户的每个Tcu的最后一个位置?如果是,则应采用以下方法:

positions = [
  tcu.position_set.order_by('-id').values('latitude','longitude')[0]   
  for tcu in request.user.tcu_set.prefetch_related('position_set')
  ]

有人可能会证明我错了,但我不认为有一种简单的方法可以在不迭代Tcu集的情况下得到您想要的。。。

编辑:如果您的Tcus没有位置,您可能希望将其过滤掉(最好是在查询集级别),以避免索引

tcus =  request.user.tcu_set.exclude(position_set__isnull=True).prefetch_related('position_set')
positions = [
  tcu.position_set.order_by('-id').values('latitude','longitude')[0]   
  for tcu in tcus
  ]
 类似资料:
  • 我试图从json文件中获取一个对象数组,但遇到了一个问题。 我应该使用什么路径来获取项目中的所有项目(item0、item1、item2…)? 你能给我一个怎么做的建议吗。 Json 示例 从items对象中过滤item的最佳方法,但我不知道如何使用json路径。

  • 我想过滤Spark sql。DataFrame只留下想要的数组元素,而不知道整个模式(不要硬编码)。模式: 我希望整个根只包含特定的测量值(已过滤),并且根必须在过滤后至少包含一个。 我有这个根的数据帧,我有一个过滤值的数据帧(一列)。 所以,例如:我只知道我的根包含测量数组,而该数组包含标签。所以我想要包含标签(“label1”、“label2”)的整个根和整个测量值。 最后一次使用爆炸和col

  • 主要内容:,创建模型,操作数据(CRUD),其他数据操作,,链接模型模型是表示我们的数据库表或集合类,并且其中所述类的每个属性是表或集合的字段。模型是在 app/models.py 中定义(在我们的例子中是:myapp/models.py) 创建模型 下面是创建一个 Dreamreal 模型实例 − 每一个模型继承自django.db.models.Model。 我们类有4个属性(3 CharField和1个整数),这将是表中的字段。 Meta类与db_table

  • 我们现在将要创建的是一个能存储我们博客所有文章的东西。为了达到这个目的,我们将要讲解一下一个被称为objects(对象)的东西. 对象 在编程中有一个概念叫做 面向对象编程 。 它的思想是,与其用无聊的一连串的程序指令方式写程序,我们不如为事物建立模型,然后定义他们是怎样互相交互的。 那什幺是对象呢?它是一个属性和操作的集合。它听起来很奇怪,但我们会给你一个例子。 如果我们想塑造一只猫的模型,我们

  • Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。 Django 为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。 MySQL 是 Web 应用中最常用的数据库。本章节我们将以 Mysql 作为实例进行介绍。你可以通过本站的 MySQL 教程 了解更多Mysql的基础知识。 如果你没安装 mysql 驱动

  • 问题内容: 我在家里一直在使用Django和Django ORM,我不得不说,就易用性而言,它是目前最好的之一。 但是,我想知道是否可以在“反向”中使用它。 基本上,我想做的是从现有的数据库模式(从不使用django且相当老的项目中)生成Django模型。 这可能吗? 更新:有问题的数据库是Oracle 问题答案: 是的,使用命令: http://docs.djangoproject.com/en