Django多表继承,Django-model-utils错误

时间:2012-04-18 02:16:10

标签: django inheritance multi-table

我正在为我的车库做一个爱好项目。我被引导到django-model-utils以满足我的需要。 (我有串口数控机床,串口机有两种流量控制方法)

我有一个SerialMachine的父类(定义地址,波特率,通用RS-232定义)

然后我有继承自SerialMachine的HardwareFlowControlMachine模型(定义CTS / DTR / etc)

因此,当我将机器名称放入表格(比如机器001)时,我有一个能够获得机器设置的功能。

def getMachineSettings(machine):

    from src.apps.cnc.models import SerialMachine

    machineSettings = SerialMachine.objects.get(machineName=machine).select_subclasses()

    return machineSettings

我得到了这个例外:

  DatabaseError: no such column: cnc_hardwareflowcontrolmachine.serialmachine_ptr_id

现在进行测试我在SoftwareFlowControlMachine中只有一台机器(硬件中没有)

我想也许HardwareFlowControlMachine无论出于何种原因都需要至少一个对象。所以当我去/ admin /并尝试将一台机器添加到SoftwareFlowControlMachine或HardwareFlowControlMachine时,我得到了这个例外:

HardwareFlowControlMachine:

DatabaseError at /admin/cnc/hardwareflowcontrolmachine/

no such column: cnc_hardwareflowcontrolmachine.serialmachine_ptr_id

Request Method:     GET
Request URL:    http://127.0.0.1:8000/admin/cnc/hardwareflowcontrolmachine/
Django Version:     1.4
Exception Type:     DatabaseError
Exception Value:    

no such column: cnc_hardwareflowcontrolmachine.serialmachine_ptr_id

Exception Location:     C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py in execute, line 337
Python Executable:  C:\Python27\python.exe
Python Version:     2.7.2

SoftwareFlowControlMachine:

DatabaseError at /admin/cnc/softwareflowcontrolmachine/

no such column: cnc_softwareflowcontrolmachine.serialmachine_ptr_id

Request Method:     GET
Request URL:    http://127.0.0.1:8000/admin/cnc/softwareflowcontrolmachine/
Django Version:     1.4
Exception Type:     DatabaseError
Exception Value:    

no such column: cnc_softwareflowcontrolmachine.serialmachine_ptr_id

Exception Location:     C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py in execute, line 337
Python Executable:  C:\Python27\python.exe
Python Version:     2.7.2

如果我需要提供更多信息,请告诉我。我真的不确定我错过了什么

1 个答案:

答案 0 :(得分:0)

我得到了它的工作。我现在还不清楚它为什么会发生。我犯的错误是

 machineSettings = SerialMachine.objects.get(machineName=machine).select_subclasses()

我需要这个

 machineSettings = SerialMachine.objects.get_subclass(machineName=machine)

我也刚刚删除了我的数据库并重新制作了它。

希望这也有助于其他人