我正在尝试创建一个单独的管理页面条目,在这里我可以看到同一页面上不同型号的感兴趣的字段。
get_sensor_id在名为MountedSensor的模型中定义,与SensorViewTypeBackgroundInfo分开
@admin.register(SensorViewTypeBackgroundInfo)
class SensorViewBackground(admin.ModelAdmin):
model = SensorView
fields = ('sensor_view_id', 'sensor_view_name')
list_display = ('enum_name', 'info_id', 'get_sensor_id')
当前,出现以下错误:
“ list_display [2]”的值引用“ get_sensor_id”,而不是 可调用对象,“ SensorViewBackground”的属性或“ app.SensorViewTypeBackgroundInfo”上的属性或方法
根据一些建议,我按如下方式编辑了models.py中的代码
class SensorViewTypeBackgroundInfo(models.Model):
info_id = models.ForeignKey(Sensor, null=True, related_name="unique_id", on_delete=models.SET_NULL, db_column='sensor_id')
enum_name = models.TextField(blank=True, null=True)
def get_sensor_id(self, obj):
return MountedSensor.objects.get(mounted_sensor_id)
class MountedSensor(models.Model):
sensor_id = models.IntegerField(unique=True)
mounted_sensor_id = models.IntegerField(primary_key=True)
我现在遇到以下错误:
TypeError:get_sensor_id()缺少1个必需的位置参数: 'obj'
答案 0 :(得分:0)
如果模型之间存在某种关系,则可以使用admin.TabularInline。
编辑:您是在谈论list_displays
,这意味着您需要列表中的新列,对吧?
在这种情况下,您可以尝试执行以下操作:
@admin.register(SensorViewTypeBackgroundInfo)
class SensorViewBackground(admin.ModelAdmin):
model = SensorView
fields = ('sensor_view_id', 'sensor_view_name')
list_display = ('enum_name', 'info_id', 'get_sensor_id')
def get_sensor_id(self, obj):
# Here you could get the information you need from your another model
return MountedSensor.objects.get(...).field
您可以从get_sensor_id
中删除SensorViewTypeBackgroundInfo
方法。