python flask mongoengine flask-admin

python - Manejo del DynamicEmbeddedDocument de MongoEngine en Flask-Admin



(2)

Me parece que tienes que personalizar la vista de administrador para tus modelos. Es una tarea que debe hacer para sus modelos si no se muestran correctamente "fuera de la caja".

En la mayoría de los casos, no es necesario volver a escribir las vistas por completo. En la mayoría de los casos, será suficiente para personalizar las vistas integradas.

No tengo ninguna experiencia en el desarrollo de matraz, pero básicamente tendrá que subclasificar ModelView . y registra la subclase al administrador.

#Customized admin views class ExerciseQuestionView(ModelView): # # add customisation code here # class MultipleAnswerMCQExerciseQuestionView(ModelView): # # add customisation code here # class UniqueAnswerMCQExerciseQuestionView(ModelView): # # add customisation code here # if __name__ == ''__main__'': # Create admin admin = admin.Admin(app, ''Example: MongoEngine'') # Add admin views admin.add_view(ExerciseQuestionView(ExerciseQuestion)) admin.add_view(MultipleAnswerMCQExerciseQuestionView(MultipleAnswerMCQExerciseQuestion)) admin.add_view(UniqueAnswerMCQExerciseQuestionView(UniqueAnswerMCQExerciseQuestion)) #...

De todos modos, creo que deberías revisar la documentación ... o puedes terminar esperando demasiado aquí ...

http://flask-admin.readthedocs.io/en/latest/api/mod_contrib_mongoengine/

Tengo un problema para el que no puedo encontrar una solución simple, usando Flask-Admin con MongoEngine. Tengo una clase de documento llamada ExerciseResourceContent . Tiene un atributo de "preguntas", que es un ListField de un EmbeddedDocument llamado ExerciseQuestion :

class ExerciseResourceContent(ResourceContent): """An exercise with a list of questions.""" ## Embedded list of questions questions = db.ListField(db.EmbeddedDocumentField(ExerciseQuestion))

El documento ExerciseQuestion es en realidad un DynamicEmbeddedDocument :

class ExerciseQuestion(db.DynamicEmbeddedDocument): """ Generic collection, every question type will inherit from this. Subclasses should override method "without_correct_answer" in order to define the version sent to clients. Subclasses of questions depending on presentation parameters should also override method "with_computed_correct_answer". """ _id = db.ObjectIdField(default=ObjectId) ## Question text question_text = db.StringField(required=True) ## Correct answer (field type depends on question type) correct_answer = db.DynamicField()

Puede ser subclasificado en dos clases (más por venir): MultipleAnswerMCQExerciseQuestion y UniqueAnswerMCQExerciseQuestion:

class MultipleAnswerMCQExerciseQuestion(ExerciseQuestion): """Multiple choice question with several possible answers.""" ## Propositions propositions = db.ListField(db.EmbeddedDocumentField(MultipleAnswerMCQExerciseQuestionProposition)) ## Correct answer correct_answer = db.ListField(db.ObjectIdField()) class UniqueAnswerMCQExerciseQuestion(ExerciseQuestion): """Multiple choice question with one possible answer only.""" ## Propositions propositions = db.ListField(db.EmbeddedDocumentField(UniqueAnswerMCQExerciseQuestionProposition)) ## Correct answer correct_answer = db.ObjectIdField()

Cuando uso Flask-Admin para crear o editar un ExerciseResourceContent , muestra una lista de "Preguntas", desde la cual puedo editar un atributo "Question_text", pero no puedo ver el atributo "Correct_Answer", ni ningún atributo "Propositions" como Me gustaría. Luché con el documento Flask-Admin, pero parece que es un problema con las cosas dinámicas (campos o documentos), y no hay nada al respecto en los documentos.

Gracias por tu ayuda


import time sentence = "ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOUR COUNTRY" s = sentence.split() another = [0] time.sleep(0.5) print(sentence) for count, i in enumerate(s): if s.count(i) < 2: another.append(max(another) + 1) else: another.append(s.index(i) +1) another.remove(0) time.sleep(0.5) print(another) file = open("N:/(Filedirectory)","w") file.write(another) file.write(s)