list_editable = ('unit', 'device', 'value_class', 'active', 'writeable') list_display_links = ('name',) save_as = True save_as_continue = True def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(WebServiceVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(WebServiceVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [ WebServiceVariableAdminInline ] class WebServiceActionAdmin(admin.ModelAdmin): list_display = ('id', 'name', 'webservice_mode', 'path') filter_horizontal = ('variables', 'variable_properties',) save_as = True save_as_continue = True # admin_site.register(ExtendedWebServiceDevice, WebServiceDeviceAdmin) # admin_site.register(ExtendedWebServiceVariable, WebServiceVariableAdmin) admin_site.register(WebServiceAction, WebServiceActionAdmin)
class GPIOVariableAdminInline(admin.StackedInline): model = GPIOVariable class GPIOVariableAdmin(VariableAdmin): list_display = ('id', 'name', 'description', 'unit', 'device_name', 'value_class', 'active', 'writeable') list_editable = ( 'active', 'writeable', ) list_display_links = ('name', ) def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(GPIOVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(GPIOVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [GPIOVariableAdminInline] admin_site.register(ExtendedGPIODevice, GPIODeviceAdmin) admin_site.register(ExtendedGPIOVariable, GPIOVariableAdmin)
# -*- coding: utf-8 -*- from pyscada.admin import admin_site from pyscada.onewire.models import OneWireVariable from django.contrib import admin admin_site.register(OneWireVariable)
class SMbusVariableAdminInline(admin.StackedInline): model = SMbusVariable class SMbusVariableAdmin(VariableAdmin): def name(self, instance): return instance.smbus_variable.name def value_class(self, instance): return instance.smbus_variable.value_class def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(SMbusVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(SMbusVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [SMbusVariableAdminInline] admin_site.register(ExtendedSMBusDevice, SMbusDeviceAdmin) admin_site.register(ExtendedSMbusVariable, SMbusVariableAdmin)
# -*- coding: utf-8 -*- from pyscada.admin import admin_site from pyscada.onewire.models import OneWireVariable, OneWireDevice from django.contrib import admin class OneWireVariableAdmin(admin.ModelAdmin): list_display = ('name', 'value_class', 'address', 'sensor_type') raw_id_fields = ('onewire_variable', ) def name(self, instance): return instance.onewire_variable.name def value_class(self, instance): return instance.onewire_variable.value_class admin_site.register(OneWireVariable, OneWireVariableAdmin) admin_site.register(OneWireDevice)
# -*- coding: utf-8 -*- from pyscada.admin import admin_site from pyscada.smbus.models import SMbusDevice from pyscada.smbus.models import SMbusVariable from django.contrib import admin class SMbusDeviceAdmin(admin.ModelAdmin): list_display = ('device_name','description','port','address',) def device_name(self, instance): return instance.smbus_device.short_name def description(self, instance): return instance.smbus_device.description class SMbusVariableAdmin(admin.ModelAdmin): search_fields = ['smbus_variable__name',] list_display = ('name','value_class','information',) raw_id_fields = ('smbus_variable',) def name(self, instance): return instance.smbus_variable.name def value_class(self, instance): return instance.smbus_variable.value_class admin_site.register(SMbusDevice,SMbusDeviceAdmin) admin_site.register(SMbusVariable,SMbusVariableAdmin)
# -*- coding: utf-8 -*- from pyscada.admin import admin_site from pyscada.export.models import ScheduledExportTask, ExportTask from django import forms from django.contrib import admin from django import forms from datetime import datetime from time import mktime class ScheduledExportTaskAdmin(admin.ModelAdmin): filter_horizontal = ('variables', ) class ExportTaskAdmin(admin.ModelAdmin): filter_horizontal = ('variables', ) list_display = ('id','label','datetime_start','datetime_fineshed',\ 'mean_value_period','file_format','done','busy','failed',) admin_site.register(ScheduledExportTask, ScheduledExportTaskAdmin) admin_site.register(ExportTask, ExportTaskAdmin)
# -*- coding: utf-8 -*- from pyscada.admin import admin_site from pyscada.phant.models import PhantDevice from django.contrib import admin admin_site.register(PhantDevice)
# -*- coding: utf-8 -*- from pyscada.admin import admin_site from pyscada.visa.models import * from django.contrib import admin admin_site.register(VISAVariable) admin_site.register(VISADevice) admin_site.register(VISADeviceHandler)
qs = super(VISADeviceAdmin, self).get_queryset(request) return qs.filter(protocol_id=PROTOCOL_ID) inlines = [DeviceAdminInline] class VISAVariableAdminInline(admin.StackedInline): model = VISAVariable class VISAVariableAdmin(VariableAdmin): def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(VISAVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(VISAVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [VISAVariableAdminInline] admin_site.register(ExtendedVISADevice, VISADeviceAdmin) admin_site.register(ExtendedVISAVariable, VISAVariableAdmin) admin_site.register(VISADeviceHandler)
class PT104VariableAdminInline(admin.StackedInline): model = PT104Variable class PT104VariableAdmin(VariableAdmin): def name(self, instance): return instance.pt104_variable.name def value_class(self, instance): return instance.pt104_variable.value_class def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(PT104VariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(PT104VariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [PT104VariableAdminInline] admin_site.register(ExtendedPT104Variable, PT104VariableAdmin) admin_site.register(ExtendedPT104Device, PT104DeviceAdmin)
# -*- coding: utf-8 -*- from __future__ import unicode_literals from pyscada.admin import admin_site from pyscada.scripting.models import Script from django.contrib import admin import logging logger = logging.getLogger(__name__) class ScriptAdmin(admin.ModelAdmin): list_display = ( 'id', 'label', 'active', 'interval', 'script_file', ) list_editable = ( 'label', 'active', 'interval', 'script_file', ) list_display_links = ('id', ) admin_site.register(Script, ScriptAdmin)
# -*- coding: utf-8 -*- from pyscada.admin import admin_site from pyscada.systemstat.models import SystemStatVariable from django.contrib import admin class SystemStatVariableAdmin(admin.ModelAdmin): search_fields = [ 'system_stat_variable__name', ] list_display = ( 'name', 'value_class', 'information', ) raw_id_fields = ('system_stat_variable', ) def name(self, instance): return instance.system_stat_variable.name def value_class(self, instance): return instance.system_stat_variable.value_class admin_site.register(SystemStatVariable, SystemStatVariableAdmin)
class ModbusVariableAdmin(VariableAdmin): list_display = ('id', 'name', 'description', 'unit', 'device_name', 'value_class', 'active', 'writeable', 'address', 'function_code_read',) list_editable = ('active', 'writeable',) list_display_links = ('name',) def address(self, instance): return instance.modbusvariable.address def function_code_read(self, instance): return instance.modbusvariable.function_code_read def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(ModbusVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(ModbusVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [ ModbusVariableAdminInline ] admin_site.register(ExtendedModbusDevice, ModbusDeviceAdmin) admin_site.register(ExtendedModbusVariable, ModbusVariableAdmin)
class LaboremRobotElementAdmin(admin.ModelAdmin): list_display = ('name', 'active', 'value', 'unit', 'R', 'theta', 'z') save_as = True save_as_continue = True class LaboremGroupInputPermissionAdmin(admin.ModelAdmin): filter_horizontal = ('variables', 'variable_properties', 'laborem_motherboard_device', 'laborem_experiences') save_as = True save_as_continue = True class LaboremUserAdmin(admin.ModelAdmin): list_display = ('user', 'laborem_group_input', 'connection_time', 'start_time', 'last_check', 'connection_id') save_as = True save_as_continue = True admin_site.register(ExtendedLaboremMotherboardDevice, LaboremMotherboardDeviceAdmin) admin_site.register(LaboremMotherboardIOConfig) admin_site.register(LaboremMotherboardIOElement) admin_site.register(LaboremExperience) admin_site.register(LaboremPlugDevice, LaboremPlugDeviceAdmin) admin_site.register(LaboremRobotElement, LaboremRobotElementAdmin) admin_site.register(LaboremRobotBase, LaboremRobotBaseAdmin) admin_site.register(LaboremTOP10, LaboremTOP10Admin) admin_site.register(LaboremTOP10Score, LaboremTOP10ScoreAdmin) admin_site.register(LaboremTOP10Ranking, LaboremTOP10RankingAdmin) admin_site.register(LaboremGroupInputPermission, LaboremGroupInputPermissionAdmin) admin_site.register(LaboremUser, LaboremUserAdmin)
**kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(SystemStatDeviceAdmin, self).get_queryset(request) return qs.filter(protocol_id=PROTOCOL_ID) class SystemStatVariableAdminInline(admin.StackedInline): model = SystemStatVariable class SystemStatVariableAdmin(VariableAdmin): def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(SystemStatVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(SystemStatVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [SystemStatVariableAdminInline] admin_site.register(ExtendedSystemStatDevice, SystemStatDeviceAdmin) admin_site.register(ExtendedSystemStatVariable, SystemStatVariableAdmin)
class PageAdmin(admin.ModelAdmin): list_display_links = ('id',) list_display = ('id', 'title', 'link_title', 'position',) list_editable = ('title', 'link_title', 'position',) list_filter = ('view__title',) class ProcessFlowDiagramItemAdmin(admin.ModelAdmin): raw_id_fields = ('variable',) class ProcessFlowDiagramAdmin(admin.ModelAdmin): filter_horizontal = ('process_flow_diagram_items',) admin_site.register(ControlItem, ControlItemAdmin) admin_site.register(Chart, ChartAdmin) admin_site.register(XYChart, XYChartAdmin) admin_site.register(DropDown, DropDownAdmin) admin_site.register(DropDownItem, DropDownItemAdmin) admin_site.register(Form, FormAdmin) admin_site.register(SlidingPanelMenu, SlidingPanelMenuAdmin) admin_site.register(Page, PageAdmin) admin_site.register(GroupDisplayPermission, GroupDisplayPermissionAdmin) admin_site.register(ControlPanel, ControlPanelAdmin) admin_site.register(CustomHTMLPanel, CustomHTMLPanelAdmin) admin_site.register(Widget, WidgetAdmin) admin_site.register(View, ViewAdmin) admin_site.register(ProcessFlowDiagram, ProcessFlowDiagramAdmin) admin_site.register(ProcessFlowDiagramItem, ProcessFlowDiagramItemAdmin)
# -*- coding: utf-8 -*- from __future__ import unicode_literals from pyscada.admin import admin_site from pyscada.scripting.models import Script from django.contrib import admin import logging logger = logging.getLogger(__name__) admin_site.register(Script)
class SMLVariableAdminInline(admin.StackedInline): model = SMLVariable class SMLVariableAdmin(VariableAdmin): list_display = ('id', 'name', 'description', 'unit', 'device_name', 'value_class', 'active', 'writeable') list_editable = ( 'active', 'writeable', ) list_display_links = ('name', ) def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(SMLVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(SMLVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [SMLVariableAdminInline] admin_site.register(ExtendedSMLDevice, SMLDeviceAdmin) admin_site.register(ExtendedSMLVariable, SMLVariableAdmin)
] class SMbusVariableAdminInline(admin.StackedInline): model = SMbusVariable class SMbusVariableAdmin(VariableAdmin): def name(self, instance): return instance.smbus_variable.name def value_class(self, instance): return instance.smbus_variable.value_class def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(SMbusVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(SMbusVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [ SMbusVariableAdminInline ] admin_site.register(ExtendedSMBusDevice, SMbusDeviceAdmin) admin_site.register(ExtendedSMbusVariable, SMbusVariableAdmin)
) list_editable = ( 'active', 'writeable', ) list_display_links = ('name', ) def address(self, instance): return instance.modbusvariable.address def function_code_read(self, instance): return instance.modbusvariable.function_code_read def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(ModbusVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(ModbusVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [ModbusVariableAdminInline] admin_site.register(ExtendedModbusDevice, ModbusDeviceAdmin) admin_site.register(ExtendedModbusVariable, ModbusVariableAdmin)
return qs.filter(protocol_id=PROTOCOL_ID) inlines = [ DeviceAdminInline ] class VISAVariableAdminInline(admin.StackedInline): model = VISAVariable class VISAVariableAdmin(VariableAdmin): def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(VISAVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(VISAVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [ VISAVariableAdminInline ] admin_site.register(ExtendedVISADevice, VISADeviceAdmin) admin_site.register(ExtendedVISAVariable, VISAVariableAdmin) admin_site.register(VISADeviceHandler)
'ip_address', 'port', ) def device_name(self, instance): return instance.modbus_device.short_name def description(self, instance): return instance.modbus_device.description class ModbusVariableAdmin(admin.ModelAdmin): search_fields = [ 'modbus_variable__name', ] list_display = ( 'name', 'value_class', 'address', ) raw_id_fields = ('modbus_variable', ) def name(self, instance): return instance.modbus_variable.name def value_class(self, instance): return instance.modbus_variable.value_class admin_site.register(ModbusDevice, ModbusDeviceAdmin) admin_site.register(ModbusVariable, ModbusVariableAdmin)
class LaboremMotherboardVariableAdmin(VariableAdmin): list_display = ('id', 'name', 'description', 'unit', 'device_name', 'value_class', 'active', 'writeable') list_editable = ( 'active', 'writeable', ) list_display_links = ('name', ) def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(LaboremMotherboardVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(LaboremMotherboardVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [LaboremMotherboardVariableAdminInline] admin_site.register(ExtendedLaboremMotherboardDevice, LaboremMotherboardDeviceAdmin) admin_site.register(ExtendedLaboremMotherboardVariable, LaboremMotherboardVariableAdmin) admin_site.register(LaboremMotherboardIOConfig) admin_site.register(LaboremMotherboardIOElement) admin_site.register(LaboremPlugDevice)
kwargs['queryset'] = DeviceProtocol.objects.filter(pk=PROTOCOL_ID) db_field.default = PROTOCOL_ID return super(PhantDeviceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(PhantDeviceAdmin, self).get_queryset(request) return qs.filter(protocol_id=PROTOCOL_ID) inlines = [PhantDeviceAdminInline] class PhantVariableAdmin(VariableAdmin): def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(PhantVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(PhantVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) admin_site.register(ExtendedPhantDevice, PhantDeviceAdmin) admin_site.register(ExtendedPhantVariable, PhantVariableAdmin)
# -*- coding: utf-8 -*- from __future__ import unicode_literals from pyscada.admin import admin_site from pyscada.export.models import ScheduledExportTask, ExportTask from django.contrib import admin import logging logger = logging.getLogger(__name__) class ScheduledExportTaskAdmin(admin.ModelAdmin): filter_horizontal = ('variables',) class ExportTaskAdmin(admin.ModelAdmin): filter_horizontal = ('variables',) list_display = ('id', 'label', 'datetime_start', 'datetime_finished', 'mean_value_period', 'file_format', 'done', 'busy', 'failed', 'downloadlink') list_display_links = ('id', 'label') readonly_fields = ('filename', 'datetime_finished', 'done', 'busy', 'failed', 'backgroundprocess', 'downloadlink') save_as = True admin_site.register(ScheduledExportTask, ScheduledExportTaskAdmin) admin_site.register(ExportTask, ExportTaskAdmin)
PySenseDeviceAdminInline, ] class PySenseDeviceAdmin(nested_admin.NestedModelAdmin): list_display = ('id', 'short_name') list_display_links = ('id', 'short_name') def formfield_for_choice_field(self, db_field, request, **kwargs): if db_field.name == 'byte_order': db_field.default = '3-2-1-0' return super(PySenseDeviceAdmin, self).formfield_for_choice_field(db_field, request, **kwargs) def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'protocol': kwargs['queryset'] = DeviceProtocol.objects.filter(pk=PROTOCOL_ID) db_field.default = PROTOCOL_ID return super(PySenseDeviceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(PySenseDeviceAdmin, self).get_queryset(request) return qs.filter(protocol_id=PROTOCOL_ID) inlines = [ PySenseModbusDeviceAdminInline, ] admin_site.register(ExtendedPySenseDevice, PySenseDeviceAdmin)
) list_editable = ( 'active', 'writeable', ) list_display_links = ('name', ) def address(self, instance): return instance.BACnetvariable.address def function_code_read(self, instance): return instance.bacnetvariable.function_code_read def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(BACnetVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(BACnetVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) inlines = [BACnetVariableAdminInline] admin_site.register(ExtendedBACnetDevice, BACnetDeviceAdmin) admin_site.register(ExtendedBACnetVariable, BACnetVariableAdmin)
'position', ) list_editable = ( 'title', 'link_title', 'position', ) list_filter = ('view__title', ) class ProcessFlowDiagramItemAdmin(admin.ModelAdmin): raw_id_fields = ('variable', ) class ProcessFlowDiagramAdmin(admin.ModelAdmin): filter_horizontal = ('process_flow_diagram_items', ) admin_site.register(ControlItem, ControlItemAdmin) admin_site.register(Chart, ChartAdmin) admin_site.register(SlidingPanelMenu, SlidingPanelMenuAdmin) admin_site.register(Page, PageAdmin) admin_site.register(GroupDisplayPermission, GroupDisplayPermissionAdmin) admin_site.register(ControlPanel, ControlPanelAdmin) admin_site.register(CustomHTMLPanel, CustomHTMLPanelAdmin) admin_site.register(Widget, WidgetAdmin) admin_site.register(View, ViewAdmin) admin_site.register(ProcessFlowDiagram, ProcessFlowDiagramAdmin) admin_site.register(ProcessFlowDiagramItem, ProcessFlowDiagramItemAdmin)
def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'protocol': kwargs['queryset'] = DeviceProtocol.objects.filter(pk=PROTOCOL_ID) db_field.default = PROTOCOL_ID return super(PhantDeviceAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(PhantDeviceAdmin, self).get_queryset(request) return qs.filter(protocol_id=PROTOCOL_ID) inlines = [ PhantDeviceAdminInline ] class PhantVariableAdmin(VariableAdmin): def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'device': kwargs['queryset'] = Device.objects.filter(protocol=PROTOCOL_ID) return super(PhantVariableAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) def get_queryset(self, request): """Limit Pages to those that belong to the request's user.""" qs = super(PhantVariableAdmin, self).get_queryset(request) return qs.filter(device__protocol_id=PROTOCOL_ID) admin_site.register(ExtendedPhantDevice, PhantDeviceAdmin) admin_site.register(ExtendedPhantVariable, PhantVariableAdmin)