当前位置: 首页 > 面试题库 >

在Django中获取模型的字段

司寇书
2023-03-14
问题内容

给定Django模型,我试图列出其所有字段。我已经看到了使用_meta模型属性执行此操作的一些示例,但是meta前面的下划线是否表示_meta属性是私有属性,不应直接访问?…例如,因为_meta的布局将来可能会更改,并且不是稳定的API?

_meta是该规则的例外吗?它是否稳定且可以使用,还是访问它的不正确做法?还是有一种功能或其他方法可以在不使用_meta属性的情况下自省模型的字段?以下是一些链接的列表,这些链接显示了如何使用_meta属性执行此操作


问题答案:

_meta是私有的,但相对稳定。我们正在努力对其进行形式化,记录和删除下划线,这可能在1.3或1.4之前发生。我想将尽一切努力来确保事物向后兼容,因为无论如何,很多人都在使用它。

如果你特别关注兼容性,请编写一个采用模型并返回字段的函数。这意味着,如果将来发生某些变化,则只需更改一个功能。

def get_model_fields(model):
    return model._meta.fields

我相信这将返回Field对象列表。要从实例获取每个字段的值,请使用getattr(instance, field.name)

更新:Django贡献者正在研究一个API,以替换_Meta对象作为Google Summer of Code的一部分。



 类似资料:
  • 问题内容: 我定义了一个(最终)继承自的类。我想获取为此模型定义的所有字段的列表。例如,。基本上,我想检索从该类继承的任何内容。 我以为我可以利用来检索这些,但是它返回的列表不包含任何这些字段。看起来Django已经掌握了该类,并添加了其所有魔术属性并去除了实际定义的内容。那么…我如何获得这些领域?它们可能具有为自己的内部目的检索它们的功能? 问题答案: 由于大多数答案已过时,因此我将尝试在Dja

  • 问题内容: 在Django中,你可以指定如下关系: 然后在内部必须将字符串“ Person”转换为模型。 该功能在哪里?我想使用它,但是找不到。 问题答案: 在Django 1.7中已弃用(在1.9中删除),以支持新的应用程序加载系统。 Django 1.7文档为我们提供了以下内容:

  • 问题内容: 我正在执行以下操作: 返回以下内容: 我只想知道此字段是“ URLField”。如何从此输出中提取出来? 注意:我这样做是为了对字段进行验证。例如,如果是url,我想检查它是否格式正确。 问题答案: 如果你这样做: 结果你可能无法获得。 相反,你正在这样做: 其中,作为解释在这里,不调用该方法,它只是指的是方法绑定方法的对象。返回值不是该绑定方法对象的一部分,它是在调用方法时由方法创建

  • Model.py setting.py 错误:命令使用:python manage.py makemigrations ganana Traceback(最后一次调用):文件“manage.py”,第22行,从命令行执行(sys.argv)文件“C:\Program Files\Python36\lib\site packages\django-1.11.5- py3.6.egg\django\c

  • 问题内容: 我想通过models.py方法获取当前登录的用户。我想检查用户的角色,并查看它是否可以根据其角色执行某些操作。 models.py: 在这里,该模型被用作内联模型。我想检查当前登录用户的角色,并根据用户角色更新另一个模型。在这里,我需要检查当前用户的角色。我没有使用任何形式或模板,而是完全利用了。是否有任何方法可以进入该方法或检查并更新中另一个模型中的值? 问题答案: 你可以从另一个角

  • 我用Django开发了一个Web应用。在View函数中,我将一个查询集列表呈现到前端。在我的例子中,标题表是书籍信息,材料是这本书的详细信息,附在哪个课程上,如果这个附加关系是“丢弃”。is_discard在材料表中,而不是这本书丢弃与否。在材料表中,一门课程附带几本书,丢弃状态不是按书而是按书-课对,因为有些书可能在一门课程中丢弃,但在其他课程中有效 看法py: 在前端,query\u resu