【问题标题】:what does direct in _meta.get_field_by_name(django) mean_meta.get_field_by_name(django) 中的 direct 是什么意思
【发布时间】:2012-05-01 03:12:31
【问题描述】:

我不明白“直接”是做什么用的。

我对 _meta.get_field_by_name 做了一些谷歌研究,发现 Given a QS field lookup key, how to find fields type across joins?

但是“ORM 的查找”在 django 中是什么意思?

【问题讨论】:

    标签: django meta


    【解决方案1】:

    django.db.models.options 中Django Options 对象的_name_map 属性的数量来看,它似乎与您使用的字段名称是Model 中声明的字段还是创建的名称有关来自related name 设置。恐怕我对相关名称的东西不熟悉,但代码看起来像:

    for f, model in self.get_all_related_m2m_objects_with_model():
        cache[f.field.related_query_name()] = (f, model, False, True)
    for f, model in self.get_all_related_objects_with_model():
        cache[f.field.related_query_name()] = (f, model, False, False)
    for f, model in self.get_m2m_with_model():
        cache[f.name] = (f, model, True, True)
    for f, model in self.get_fields_with_model():
        cache[f.name] = (f, model, True, False)
    for f in self.virtual_fields:
        if hasattr(f, 'related'):
            cache[f.name] = (f.related, None if f.model == self.model else f.model, True, False)
    

    因此,您只能看到前两个 for 循环使用具有 directFalse 的条目填充缓存,并且它们使用 related_query_name。也许其他人可以在您提出问题后的 2 和 1/2 年内更清楚地了解它,或者更有可能的是,您自己已经弄清楚了 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-29
      • 2018-09-25
      • 1970-01-01
      • 2022-12-20
      • 1970-01-01
      • 2011-08-12
      • 2017-06-11
      • 2018-03-05
      相关资源
      最近更新 更多