【问题标题】:Issues about database queries in django关于 django 中的数据库查询的问题
【发布时间】:2012-12-08 21:45:11
【问题描述】:

我想从数据库中获取当前用户最后插入的 id。我知道我可以从这个查询中获取表中最后插入的行 last_inserted_id = User.objects.order_by('-id')[0]

但是,如果有多个用户同时登录到站点,那么我如何获取当前用户最后插入的数据。

【问题讨论】:

    标签: mysql django models


    【解决方案1】:

    要获取当前用户的最后插入数据,您应该在每个模型中存储对该用户的引用:

    class Album(models.Model):
        artist = models.ForeignKey(Musician)
        name = models.CharField(max_length=100)
        release_date = models.DateField()
        num_stars = models.IntegerField()
        inserted_by = models.ForeignKey(User, ...)   #here
    

    那么您应该记住在创建新模型时填充此属性。

    要检索该用户最后插入的数据:

    Album.objects.filter( inserted_by = request.user ).order_by('-id')[0]
    

    也许您可以通过某种方式使审计自动化。有关想法,请参阅 Full Model History snippet

    【讨论】:

      【解决方案2】:

      我不确定我是否完全理解 “当前用户的最后插入 id” 的含义。但这里有一个例子:

      user = User.objects.get(pk=1)
      
      user.save()
      
      print user.id # prints 10 if userid is 10
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多