如何从ManyToOneRel对象获取相关的模型类名称?

本·博耶

我有一个像下面这样的类结构:

class Parent(models.Model):
    some_fields = ...

    def get_related_child_file_models_info(self):
    """
    This return a generator containing all the related file model
    info for each child
    """
        links = (
            [f.name, f]
            for f in self._meta.get_fields()
            if (f.one_to_many or f.one_to_one)
            and f.auto_created
            and not f.concrete
            and "files" in f.name
        )   
        return links

class ChildFileA(models.Model):
    ...
    parent = models.ForeignKey(
        on_delete=models.CASCADE,
        related_name="child_a_files"
    )
    file = models.FileField()
    ...

class ChildFileB(models.Model):
    ...
    parent = models.ForeignKey(
        on_delete=models.CASCADE,
        related_name="child_b_files"
    )
    file = models.FileField()
    ...

如果我在for循环中使用此生成器,则会得到

['child_a_files', <ManyToOneRel: app_name.childfilea>]

['child_b_files', <ManyToOneRel: app_name.childfileb>]

我的目标是处理一个复杂的文件上传过程,在该过程中,我有大约30种不同的模型为每个父母存储一些文件。

而且,我尽量避免为每个代码手动创建代码。

如何获取类名 ChildFileA ChildFileB ManyToOneRel 对象?

威廉·范昂塞姆

您可以使用访问这些.field.model例如:

def get_related_child_file_models_info(self):
    return [
        (f.name, f.field.model)
        for f in self._meta.get_fields()
        if (f.one_to_many or f.one_to_one)
        and f.auto_created and not f.concrete
        and "files" in f.name
    ]

这将返回对该模型的类的引用因此,这里将引用ChildFileAChildFileB您可以访问.__name__该类属性以获得类名称,例如:

def get_related_child_file_models_info(self):
    return [
        (f.name, f.field.model.__name__)
        for f in self._meta.get_fields()
        if (f.one_to_many or f.one_to_one)
        and f.auto_created and not f.concrete
        and "files" in f.name
    ]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

基础模型对象的相关名称

来自分类Dev

Laravel获取相关模型的类名

来自分类Dev

Django:从父模型类获取相关模型类

来自分类Dev

如何类对象相关的工作?

来自分类Dev

如何从Laravel 5中的变量使用模型对象的名称获取模型对象?

来自分类Dev

如何在Peewee中控制相关模型获取的字段名称?

来自分类Dev

如何在Peewee中控制相关模型获取的字段名称?

来自分类Dev

如何基于Java中的接口对象获取实现类名称

来自分类Dev

如何获取初始化对象的类的名称C#

来自分类Dev

如何从Java中的其他类获取对象的名称

来自分类Dev

如何获取初始化对象的类的名称C#

来自分类Dev

如何获取对象的名称?

来自分类Dev

Django的。如何从相关模型注释对象计数

来自分类Dev

如何删除与模型对象相关的图像-Django

来自分类Dev

在Django模板中获取对象的模型名称

来自分类Dev

获取Django中的所有相关模型类

来自分类Dev

在具有特定字段值的模型中获取对象,或者在相关模型中不获取对象

来自分类Dev

如何获取路径相关类型的类标签

来自分类Dev

如何获取类的属性名称

来自分类Dev

在模型的__str__中获取相关对象的列表

来自分类Dev

如何在Java运行时通过使用类名称获取类对象

来自分类Dev

Django:如何获取查询集的相关对象?

来自分类Dev

Django,如何获取Forignkey相关对象的属性

来自分类Dev

如何从多领域获取相关对象

来自分类Dev

EntityFramework 6.如何获取相关对象?

来自分类Dev

Django:如何获取最新的相关对象

来自分类Dev

从Spring bean名称获取类对象

来自分类Dev

从类对象类型获取DbSet名称

来自分类Dev

如何从ID获取对象的名称

Related 相关文章

热门标签

归档