Python django模型引用来自其他类的对象

Python django模型引用来自其他类的对象,python,django,python-2.7,django-models,django-admin,Python,Django,Python 2.7,Django Models,Django Admin,您好,django还很新,但考虑到以下模型及其关系,如何为对象创建一个只读字段,作为对另一个类中字段的引用?我已经在stackoverflow上查找了一段时间,但不确定这将是什么类型的模型引用 这方面的基本逻辑是: 我有一个服务器机架,它位于服务器机房的地板上,我将它与机架位置和行关联,以管理功耗和其他物品。仅供最终用户参考,我需要一个只读字段来显示此机架所在的行,以及从机架位置派生的行。我一直在忙着创建一个方法来查找它,但似乎无法理解语法或在django管理页面上找到相关内容 任何想法都将非常

您好,django还很新,但考虑到以下模型及其关系,如何为对象创建一个只读字段,作为对另一个类中字段的引用?我已经在stackoverflow上查找了一段时间,但不确定这将是什么类型的模型引用

这方面的基本逻辑是: 我有一个服务器机架,它位于服务器机房的地板上,我将它与机架位置和行关联,以管理功耗和其他物品。仅供最终用户参考,我需要一个只读字段来显示此机架所在的行,以及从机架位置派生的行。我一直在忙着创建一个方法来查找它,但似乎无法理解语法或在django管理页面上找到相关内容

任何想法都将非常感谢,我真的需要帮助,因为我一直在看文档,似乎找不到相关的模型参考

class rack(models.Model):
    class Meta:
        verbose_name = "Rack"
        verbose_name_plural = "Racks"

    def __unicode__(self):
        return str(self.position)

    def row(self, obj):
        return self.position.row

    position = models.OneToOneField("rackposition")
    row = row(position.row.row)
    asstag = models.CharField("Asset Tag", max_length=200, unique=True)
    rackunits = models.IntegerField("Rack Units")

class rackposition(models.Model):
    class Meta:
        verbose_name = "Rack Position"
        verbose_name_plural = "Rack Positions"

    def __unicode__(self):
        return str(self.position)

    position = models.CharField("Position", max_length=35, primary_key=True)
    row = models.ForeignKey("row")

class row(models.Model):
    class Meta:
        verbose_name = "Row"
        verbose_name_plural = "Rows"

    def __unicode__(self):
        return str(self.row) + "." + str(self.suite)

    row = models.CharField("Row ID", max_length=200, unique=True)
    suite = models.ForeignKey(suite, blank=False)
    power_budget = models.IntegerField("Power Budget")
    power_volt = models.IntegerField("Power Voltage")
    dual_bus = models.BooleanField("Dual Bus", default=False)

你不需要一个方法。假设您有一个名为
my\u rack
的机架实例,您可以使用
my\u rack.position.row
获取其行

注意,您应该真正遵循PEP8并使用CamelCase作为类名

如果希望在admin中将其视为只读字段,则需要在model或ModelAdmin类上定义一个方法。例如:

class RackAdmin(admin.ModelAdmin):
    model = Rack
    readonly_fields = ('row',)

    def row(self, obj):
        return obj.position.row

这会是这样的只读字段吗?对不起,我不明白这个问题。对不起,丹尼尔,让我澄清一下。如果我想让它出现在管理对象字段中,当你点击一个对象时,它会是什么模型引用?它实际上不是db中的一个字段,所以是否有一个引用我会用于表单中的通用只读字段?还是我必须创建自己的?啊,我不知道你想要它作为只读字段。请参见我的更新。对象字段的models.py上的相同逻辑?我在管理员中得到了它,用于列表中,但是如果最终用户单击该对象,则该信息将不存在。