2017-02-20 2 views
0

Ceci est mon actuelle Interface Admin: Admin InterfaceComment afficher les objets dans Django InLine interface d'administration

Un texte des entrées utilisateur via un formulaire modèle & appelé « UserText ». J'ai écrit une fonction en utilisant NLP pour extraire uniquement les questions de l'UserText. Je voudrais que chacune de ces questions individuelles soit affichée dans chaque section "Question utilisateur" de l'interface d'administration. À partir de maintenant, je ne peux pas faire fonctionner ça.

Voici mon code actuel:

Models.py

class UserText(models.Model): 
    user_input = models.TextField() 

class Question(models.Model): 
    user_text = models.ForeignKey(
     UserText, 
     on_delete=models.CASCADE, 
     blank=True, 
     null=True, 
    ) 
    user_questions = models.CharField(max_length=2000) 

Views.py

def user_text_view(request): 
    form = forms.UserTextForm() 
    if request.method == 'POST': 
     form = forms.UserTextForm(request.POST) 
     if form.is_valid(): 
      UserText = models.UserText 
      Question = models.Question 
      user_input = request.POST.get('user_input', '') 
      user_input_obj = UserText(user_input = user_input) 
      user_questions_obj = Question(user_text = user_input_obj, 
       user_questions = Question_Init(user_input_obj)) 
      user_input_obj.save() 
      user_questions_obj.save() 
      print("Thanks for the questions!") 

    else: 
     form = forms.UserTextForm() 

    return render(request, 'text_input_form.html', {'form': form}) 

Admin.py

class QuestionInLine(admin.StackedInline): 
    model = Question 
    display = ('user_questions_obj') 


@admin.register(UserText) 
class UserTextAdmin(admin.ModelAdmin): 
    model = UserText 
    display = ('user_input') 
    inlines = [ 
     QuestionInLine, 

    ] 

Et enfin ma fonction:Je sais que c'est beaucoup, désolé, mais je ne sais pas comment obtenir chaque question pour remplir les champs de la question dans mon interface d'administration. Merci

Répondre

0

Le problème n'est pas votre interface d'administration, mais comment vous créez les objets Question. Vous devez parcourir le résultat de votre fonction et créer des éléments liés pour chacun d'entre eux:

for question_text in Question_Init(user_input_obj): 
    user_questions_obj = Question(user_text=user_input_obj, 
            user_questions=question_text) 
    user_questions_obj.save() 
+0

Daniel Roseman ... vous m'avez sauvé la vie! Merci beaucoup lol, je n'aurais jamais compris ça. Peut-être dans quelques semaines, mais quand même, merci l'homme. Pour une raison quelconque, chaque question est sauvegardée deux fois. Voyez-vous des erreurs dans mon code qui pourraient causer cela? – jblew

+0

Bien sûr; il est possible (et même probable) que les deux conditions de votre fonction soient vraies, c'est-à-dire que la phrase commence par un mot de question et se termine par un point d'interrogation. Soit 'else' avant la seconde if, ou mettez les deux conditions dans la même instruction if avec un ou:' if phrase.startswith (Beginning_Question_Prompts) ou sentence.endswith (Ending_Question_Prompts): ' –

+0

Cela a fait l'affaire! Merci Daniel – jblew