Python Django admin-显示其值的外键(非内联)
本周早些时候,我问了一个关于在子类的主模型中使用外键的问题: 我使用给出的答案制作了一个模型和子模型(最后的代码)。我的问题是,我知道外键的管理内联,但我不能使用它,因为主模型有子类的外键,而不是相反。我想在我的主类外键显示在管理 抱歉,听起来很混乱,这是我的模型: 亚类1观察前Python Django admin-显示其值的外键(非内联),python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,本周早些时候,我问了一个关于在子类的主模型中使用外键的问题: 我使用给出的答案制作了一个模型和子模型(最后的代码)。我的问题是,我知道外键的管理内联,但我不能使用它,因为主模型有子类的外键,而不是相反。我想在我的主类外键显示在管理 抱歉,听起来很混乱,这是我的模型: 亚类1观察前 class PreObservation( models.Model ): pre_observation = models.CharField(
class PreObservation( models.Model ):
pre_observation = models.CharField(
max_length=255,
choices=OBS_STANDARD_TYPES,
verbose_name="Pre-Observation Standard"
)
obs__meter_reading = models.FloatField( blank=True, null=True )
obs_if_other = models.FloatField( blank=True, null=True )
class FieldObservation( models.Model ):
site_id = models.CharField( max_length=255, choices=STATION_CHOICES )
site_name = models.CharField( max_length=255 )
stage_reading = models.FloatField( )
specific_conductance = models.FloatField( )
water_temp = models.FloatField( )
子类2现场观察
class PreObservation( models.Model ):
pre_observation = models.CharField(
max_length=255,
choices=OBS_STANDARD_TYPES,
verbose_name="Pre-Observation Standard"
)
obs__meter_reading = models.FloatField( blank=True, null=True )
obs_if_other = models.FloatField( blank=True, null=True )
class FieldObservation( models.Model ):
site_id = models.CharField( max_length=255, choices=STATION_CHOICES )
site_name = models.CharField( max_length=255 )
stage_reading = models.FloatField( )
specific_conductance = models.FloatField( )
water_temp = models.FloatField( )
主课堂记录
class Record( models.Model ):
observers = models.CharField( max_length=255, verbose_name="Name of Observer(s)")
pre_observation_standard_1 = models.ForeignKey(
PreObservation,
related_name="pre_observation_1"
)
pre_observation_standard_2 = models.ForeignKey(
PreObservation,
related_name="pre_observation_2",
blank=True, null=True
)
field_observation_1 = models.ForeignKey(
FieldObservation,
related_name="field_observation_1"
)
field_observation_2 = models.ForeignKey(
FieldObservation,
related_name="field_observation_2",
blank=True, null=True
)
cloud_coverage = models.CharField( max_length=255, choices=CLOUD_COVERAGE )
rain_past_three_days = models.BooleanField( verbose_name="Rain in Past 3 Days" )
snow = models.BooleanField( )
snow_melt = models.FloatField( )
temperature = models.CharField( max_length=255, choices=TEMPERATURE )
wind = models.CharField( max_length=255, choices=WIND )
field_notes = models.TextField( )
teachers_comments = models.TextField( )
user = models.ForeignKey( User )
group_name = models.CharField( max_length=255, blank=True )
你可以用
class RecordAdmin(admin.ModelAdmin):
list_display = ('pre_observation__pre_observation_standard_1',
'pre_observation__pre_observation_standard_2', )
admin.site.register(Record, RecordAdmin)
它们目前的显示方式有什么问题?ForeignKey现在只是一个查询列表。当我在admin中查看记录模型的查询时,我不希望ForeignKeys显示为列表,而是希望查看每个外键中的所有值,有点像admin内联线的工作方式。例如,当我在我的Record类中看到pre_observation\u standard_1时,我不希望看到其他Preobbservation查询的下拉列表,我实际上希望看到Preobbservation类中的字段和值,因为Preobbservation没有foreignkey可供记录,所以无法连接。但我想到了一个主意。是否要在记录列表中创建链接。所以每次你点击预观察的任何链接,你都会被重定向到预观察页面,然后你会看到基于他们id的等价值?是的,我想我必须这样做,你知道我在哪里可以找到这样做的信息吗?谢谢你的帮助凯瑟琳:)