나는 데이터베이스를 생성해야하며 모든 항목이 데이터베이스에 입력되고 있는지 또는 파이썬 쉘을 사용하지 않는지 확인해야합니다. MongoEngine ValidationError
은 내가class Trial(db.Document):
project_name = db.StringField(max_length=255,required=True)
list_of_materials = db.ListField(db.EmbeddedDocumentField('List_Of_Materials'))
abstract = db.StringField(max_length=255,required=True)
vehicle = db.StringField(max_length=255,required=False)
responsibilities = db.ListField(db.EmbeddedDocumentField('Responsibilities'))
시험
라는 클래스를 쓴 다음과 같이 내가 클래스 List_of_Materials과 책임을 정의 :class Responsibilities(db.EmbeddedDocument):
employee = db.StringField(max_length=255, required = True)
objective = db.StringField(max_length=255, required = True)
class List_Of_Materials(db.EmbeddedDocument):
mat_name = db.StringField(max_length=255, required=True)
mat_type = db.StringField()
mat_comments = db.StringField(max_length = 255)
는 지금은 데이터베이스에 항목을 만들기 위해 파이썬 쉘을 사용합니다.
trial_test = Trial(project_name = 'nio field trip management',
list_of_materials = [List_Of_Materials(mat_name = 'Laptop')],
abstract = 'All is well that ends well',
vehicle = Vehicle(veh_name='My Laptop',veh_num='GA07EX1234'),
responsibilities = [Responsibilities(employee='Prashant',objective='Setup the Website')],
와 나는 다음과 같은 오류 얻을 : 코드의
Traceback (most recent call last):
File "<stdin>", line 12, in <module>
File "C:\Anaconda\lib\site-packages\mongoengine\base\document.py", line 85, in __init__
value = field.to_python(value)
File "C:\Anaconda\lib\site-packages\mongoengine\base\fields.py", line 261, in to_python
self.error('You can only reference documents once they'
File "C:\Anaconda\lib\site-packages\mongoengine\base\fields.py", line 124, in error
raise ValidationError(message, errors=errors, field_name=field_name)
mongoengine.errors.ValidationError: You can only reference documents once they have been saved to the database
LINE (12)이다 responsibilities=db.ListField(db.EmbeddedDocumentField('Responsibilities'))
내가 뭘 위의 오류에서 해석 할 수 것은 우리가에 첫 번째 항목을 가질 수 있다는 것입니다 "Responsibilities"클래스와 "List_Of_Material"클래스에 있지만 "List_Of_Material"의 항목은 "책임"의 항목에 위의 오류가 표시되는 동안 오류를 표시하지 않습니다.
이 문제를 방지하려면 어떻게해야합니까?