用户通过表格输入文字&模型称为“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
我知道这很多,抱歉,但我不知道如何让每个问题填充我的管理界面中的问题字段。感谢
答案 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()