从django.db.models.fields.related.ForeignKey获取相关对象

从django.db.models.fields.related.ForeignKey获取相关对象,django,Django,从模型对象中,我可以获得相关的对象快捷方式, 使用外键字段的名称: >>> m1 = Mailbox.objects.get(pk=38) >>> str(m1.localdomainfk) 'framailx.de' 但是如果我有外键字段而不是它的名称, 我只能得到相关对象的主键: >>> f1 = Mailbox._meta.get_field('localdomainfk') >>> f1.value_from_ob

从模型对象中,我可以获得相关的对象快捷方式, 使用外键字段的名称:

>>> m1 = Mailbox.objects.get(pk=38)
>>> str(m1.localdomainfk)
'framailx.de'
但是如果我有外键字段而不是它的名称, 我只能得到相关对象的主键:

>>> f1 = Mailbox._meta.get_field('localdomainfk')
>>> f1.value_from_object(m1)
7
有人能告诉我如何得到相关的物品吗 快捷方式,如果我只有本地对象和外键字段

后台是一个通用的只读详细视图,其中显示的字段的实际列表取决于活动用户(职员用户查看全部)

这是模型混合的一部分:

def get_fields(self, staff):
    l = self.readonly_fields_for_staff if staff else self.readonly_fields
    return [(field.verbose_name, self.get_field_value(field), 
                self.get_related_object_from_field(field))
                        for field in l]

def get_field_value(self, field):
    if field.is_relation:
        return None
    else:
        return self._get_FIELD_display(field)

def get_related_object_from_field(self, field):
    if field.is_relation:
        return getattr(self, field.name, None)
    else:
        return None
模板使用get_字段返回的列表

“从中获取相关对象”字段包含穆罕默德·塔希尔的答案。

您可以使用


分享你的模型。你想解决的实际问题是什么?为什么要这样做?这是针对一般的只读详细视图,其中显示的字段的实际列表取决于活动用户(职员用户查看所有):
m1 = Mailbox.objects.get(pk=38)
f1 = 'localdomainfk'
f1 = getattr(m1, f1)