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