ModelForm foreignkey字段尚未加载

时间:2017-12-06 00:41:24

标签: django foreign-keys modelform

我试图开发一种工作记录跟踪器类型的应用程序,非常类似于票证跟踪器。每张票都是'可以拥有员工拥有的多个票据(员工在已安装到票证跟踪器中的不同应用程序中进行跟踪)。

MySite
  |___WorkRecords
     |__models.py
     |__views.py
     |__etc..    //standard app stuff
  |___emp #the uncreative name for the employee manager app
     |__         //standard stuff again...

在模特中:

WorkRecords.models.py

class WorkRecord(models.Model):
    issuedate = models.DateField('date first issued',
             editable = False, default = timezone.now)
    owner = models.ForeignKey('emp.Employee', related_name='work_owner',
            on_delete=models.PROTECT)
    other_irrelevant_header_data...

    ....

class WorkRecordNote(models.Model):
    ref_wr = models.ForeignKey(WorkRecord, on_delete=models.CASCADE)
    note_text = models.CharField(max_length=1000)
    author = models.ForeignKey('emp.Employee', related_name='note_author',
            on_delete=models.PROTECT)

#Form class for the Work Record
class EditWR(ModelForm):
    class Meta:
        model = WorkRecord
        fields = '__all__'

emp.models.py

class Employee(models.Model)
    data stuff

目前,模型已全部迁移,但数据尚未输入到表中(MySQL表格全部存在,匹配模型等......但表格中没有数据)

既然我已经获得了模型并尝试制作模型,我已经尝试过makemigrations,但我收到错误追溯...

  

ValueError:无法为'所有者'创建表单字段然而,因为它的相关模型u'emp.Employee'尚未加载

我检查了我的mysite / settings.py以确保安装了应用程序,并且配置文件都在那里:

...
INSTALLED_APPS = [
    'WorkRecords.apps.WorkrecordsConfig',
    'emp.apps.EmpConfig',
    etc...
]
...

对我而言,这听起来似乎无法创建表单,因为没有任何数据已加载'进入数据库,但我对Django的其他了解表明它还不应该关心。那是准确的吗?或者还有其他我想念的东西?

修改: 我对WorkRecord的模型进行了修改,这有点修复了问题(至少错误不再存在,但我不知道副作用)

class WorkRecord(models.Model):
    ...
    owner=models.ForeignKey('emp.Employee', related_name='work_owner',
            on_delete=models.PROTECT, editable=False) #Added the editable=False
    ...

其他所有都保持不变,但这次makemigrations没有抛出错误。这里的推理是什么?

1 个答案:

答案 0 :(得分:0)

尝试更改已安装应用的订单:

INSTALLED_APPS = [
    emp.apps.EmpConfig, # first
    WorkRecords.apps.WorkrecordsConfig,
    etc...
]