我试图开发一种工作记录跟踪器类型的应用程序,非常类似于票证跟踪器。每张票都是'可以拥有员工拥有的多个票据(员工在已安装到票证跟踪器中的不同应用程序中进行跟踪)。
即
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没有抛出错误。这里的推理是什么?
答案 0 :(得分:0)
尝试更改已安装应用的订单:
INSTALLED_APPS = [
emp.apps.EmpConfig, # first
WorkRecords.apps.WorkrecordsConfig,
etc...
]