ModelForm 外键字段尚未加载
ModelForm foreignkey field not loaded yet
我正在尝试开发一种工作记录跟踪器类型的应用程序,与票务跟踪器非常相似。每个 'ticket' 可以有多个员工拥有的笔记(员工在已安装到工单跟踪器中的不同应用程序中进行跟踪)。
即
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: Cannot create form field for 'owner' yet, because its related model u'emp.Employee' has not been loaded yet
我检查了我的 mysite/settings.py 以确保安装了应用程序,并且配置文件都在那里:
...
INSTALLED_APPS = [
'WorkRecords.apps.WorkrecordsConfig',
'emp.apps.EmpConfig',
etc...
]
...
对我来说,这听起来像是它无法创建表单,因为数据库中没有任何数据 'loaded',但我从 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 没有抛出错误。这里的推理是什么?
尝试更改已安装应用的顺序:
INSTALLED_APPS = [
emp.apps.EmpConfig, # first
WorkRecords.apps.WorkrecordsConfig,
etc...
]
我正在尝试开发一种工作记录跟踪器类型的应用程序,与票务跟踪器非常相似。每个 'ticket' 可以有多个员工拥有的笔记(员工在已安装到工单跟踪器中的不同应用程序中进行跟踪)。
即
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: Cannot create form field for 'owner' yet, because its related model u'emp.Employee' has not been loaded yet
我检查了我的 mysite/settings.py 以确保安装了应用程序,并且配置文件都在那里:
...
INSTALLED_APPS = [
'WorkRecords.apps.WorkrecordsConfig',
'emp.apps.EmpConfig',
etc...
]
...
对我来说,这听起来像是它无法创建表单,因为数据库中没有任何数据 'loaded',但我从 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 没有抛出错误。这里的推理是什么?
尝试更改已安装应用的顺序:
INSTALLED_APPS = [
emp.apps.EmpConfig, # first
WorkRecords.apps.WorkrecordsConfig,
etc...
]