【问题标题】:Python / Django: Make a lookup / database query inside a model classPython / Django:在模型类中进行查找/数据库查询
【发布时间】:2020-02-22 03:56:57
【问题描述】:

查找表并将其最后一个值用作新模型实例中的值的正确方法是什么?像这样的:

class MyClass(models.Model):
    id = models.AutoField(primary_key=True)
    obj = MyClass.objects.latest('id')
    my_field = models.IntegerField(default=(obj+1))

我需要一个 db 列,它跟踪 primary_key,但独立于它,也可以修改。在创建模型的新实例时,我还需要将其值用作默认值。

【问题讨论】:

  • 你为什么要这样做? id 不是已经这样做了吗?
  • 当你说“一个新的模型类”时,你的意思是同一个模型的一个新实例吗?如果您尝试自动增加 id,正如 Roseman 所说,您不必自己实现它。
  • 因为不能直接使用id,所以像default=id这样的东西是行不通的
  • 您不能像您在问题中提到的那样简单地将1 添加到模型实例obj。您能否更具体地说明您想要完成的工作?

标签: python django lookup


【解决方案1】:

您可以使用文档中描述的自定义构造函数: https://docs.djangoproject.com/en/2.2/ref/models/instances/

您需要将 obj 字段定义为整数(以存储前一条记录的 id)或外键(如果您想引用前一条 db 记录)。在第二种情况下,您需要将模型的名称作为字符串('MyClass')而不是直接(MyClass)传递给 ForeignKeyField 构造函数。

【讨论】:

    猜你喜欢
    • 2021-01-04
    • 2012-12-22
    • 1970-01-01
    • 2020-10-09
    • 2013-04-22
    • 2021-09-03
    • 2011-07-10
    • 2014-04-25
    • 2019-06-06
    相关资源
    最近更新 更多