2015-04-03 10 views
16

Ho un problema per il quale non riesco a trovare una soluzione semplice, utilizzando Flask-Admin con MongoEngine. Ho una classe documento denominata ExerciseResourceContent. Ha un attributo "domande", che è un ListField di un EmbeddedDocument chiamato ExerciseQuestion:Gestione di DynamicEmbeddedDocumento di MongoEngine in Flask-Admin

class ExerciseResourceContent(ResourceContent): 
    """An exercise with a list of questions.""" 

    ## Embedded list of questions 
    questions = db.ListField(db.EmbeddedDocumentField(ExerciseQuestion)) 

Il documento ExerciseQuestion è in realtà 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() 

Può essere sottoclassi in due classi (di più per venire): MultipleAnswerMCQExerciseQuestion e 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() 

Quando uso Flask-Admin per creare o modificare un ExerciseResourceContent, visualizza un elenco "Domanda", da cui posso modificare un attributo "Question_text", ma non riesco a vedere l'attributo "Correct_Answer", né alcun attributo "Propositions" come vorrei Ho faticato con il documento Flask-Admin, ma sembra che si tratti di un problema con le cose dinamiche (campi o documenti) e non c'è nulla a riguardo nei documenti.

Grazie per il vostro aiuto

risposta

0
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) 
+1

Mentre questo codice può rispondere alla domanda, fornendo un contesto aggiuntivo sul perché e/o su come questo codice risponde alla domanda, migliora il suo valore a lungo termine. –

1

Mi sembra che si deve personalizzare l'admin-view per i vostri modelli. È un compito che devi fare per i tuoi modelli se non vengono visualizzati correttamente "fuori dalla scatola".

Nella maggior parte dei casi non è necessario riscrivere completamente le viste. Nella maggior parte dei casi sarà sufficiente personalizzare le viste integrate.

Non ho alcuna esperienza di sviluppo per il pallone, ma fondamentalmente devi sottoclasse ModelView. e registrare la sottoclasse per l'amministratore

#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)) 
    #... 

In ogni caso penso che si dovrebbe passare attraverso la documentazione ... o si può finire in attesa troppo a lungo qui ...

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

Problemi correlati