gpt4 book ai didi

django - 理解 Django 中的 Model.from_db()

转载 作者:行者123 更新时间:2023-12-05 01:26:01 25 4
gpt4 key购买 nike

我正在阅读 Django Official Doc for Model ,内容如下:

classmethod Model.from_db(db, field_names, values)¶

The from_db() method can be used to customize model instance creation when loading from the database.

The db argument contains the database alias for the database the model is loaded from, field_names contains the names of all loaded fields, and values contains the loaded values for each field in field_names. The field_names are in the same order as the values. If all of the model’s fields are present, then values are guaranteed to be in the order __init__() expects them. That is, the instance can be created by cls(*values). If any fields are deferred, they won’t appear in field_names. In that case, assign a value of django.db.models.DEFERRED to each of the missing fields.

看完上面我完全迷路了。

  • 第一感觉:“从数据库加载时”:对我来说,加载意味着从数据库读取/检索数据,这意味着模型实例 已存在或已创建并存储在数据库中。
  • 第二个感受:“用于自定义模型实例创建”,以及第2段都让我觉得这个from_db()是为了模型实例创建,这与我的第一印象相冲突。

问:有人可以分享我们为什么、何时以及如何在 Django 中使用 from_db() 吗?

最佳答案

在进行数据库查询后,Django 将创建模型对象。它通过调用 .from_db(…) method [Django-doc] 来实现。 .如果查询因此返回两条记录,第一条记录为 {'id': 14, 'name': 'foo'},第二条记录为 {'id': 25, 'name ': 'bar'},它会调用 .from_db(…) 方法两次 SomeModel.from_db('db-alias', ['id', 'name '], [14, 'foo']), 和 SomeModel.from_db('db-alias', ['id', 'name'], [25, 'bar'])。因此,该方法用于转换模型对象中的数据库数据。

如果您因此希望自定义如何转换从数据库中检索到的数据,您可以重写该方法,例如对参数中的数据进行预处理,或者对构造的实例进行后处理。

关于django - 理解 Django 中的 Model.from_db(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70520957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com