如何在Django Admin Interface

时间:2017-02-20 18:19:10

标签: python django admin inline

这是我当前的管理界面:Admin Interface

用户通过表格输入文字&模型称为“UserText”。我已经编写了一个使用NLP的函数来仅从UserText中提取问题。我希望每个单独的问题都显示在管理界面的每个“用户问题”部分中。截至目前,我无法实现这一目标。

这是我目前的代码:

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,

    ]

最后我的功能:

def Question_Init(user_input_obj):

    Beginning_Question_Prompts = ("Who","Whom","What","Where","When","Why","Which",
    "Whose","How","Was","Were","Did","Do","Does","Is")
    Ending_Question_Prompts = ("?",":","...")
    questions = []

    text1 = user_input_obj.user_input

    textList = sent_tokenize(text1)

    for sentence in textList:
        if sentence.startswith(Beginning_Question_Prompts):
           questions.append(sentence)

        if sentence.endswith(Ending_Question_Prompts):
            questions.append(sentence)

    return questions

我知道这很多,抱歉,但我不知道如何让每个问题填充我的管理界面中的问题字段。感谢

1 个答案:

答案 0 :(得分:0)

问题不在于您的管理界面,而在于您如何创建Question对象。您需要遍历函数的结果并为每个函数创建链接的项目:

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()