【发布时间】:2020-07-19 05:55:40
【问题描述】:
我正在尝试将来自 JSON 响应的数据添加到我的数据库中。这是我的models.py 的样子
class Question(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
category = models.ForeignKey(Category, on_delete=models.CASCADE, null=False)
question = models.CharField(max_length=100000, unique=False)
options = models.ManyToManyField("Options")
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
answer = models.ForeignKey(Options, related_name="correct", on_delete=models.CASCADE, null = False)
difficulty = models.CharField(max_length=5000)
type = models.CharField(max_length=2000)
这是我的views.py 的样子。
@api_view(['POST'])
def opendb(request):
data = requests.get(url=request.data['url']).json()
print(data)
QuestionData = {
"category": data.get('category'),
"type": data.get('type'),
"difficulty": data.get('difficulty'),
"question": data.get('question'),
"answer": data.get('correct_answer'),
"options": data.get('incorrect_answers'),
}
serializer = QuestionSerializer(data=QuestionData)
if serializer.is_valid():
serializer.save()
return JsonResponse({
"data": serializer.data
}, status=status.HTTP_200_OK)
return JsonResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
当我向这个视图发送一个 url 时会发生什么
{
"question": [
"This field may not be null."
],
"difficulty": [
"This field may not be null."
],
"type": [
"This field may not be null."
],
"category": [
"This field may not be null."
],
"answer": [
"This field may not be null."
],
"options": [
"This field may not be null."
]
这是我需要从返回 JSON 中填充数据的 API 的方式
{
"response_code": 0,
"results": [
{
"category": "General Knowledge",
"type": "multiple",
"difficulty": "easy",
"question": "What do the letters in the GMT time zone stand for?",
"correct_answer": "Greenwich Mean Time",
"incorrect_answers": [
"Global Meridian Time",
"General Median Time",
"Glasgow Man Time"
]
}
]
print(data) 输出以下内容:
{'response_code': 0, 'results': [{'category': 'General Knowledge', 'type': 'multiple', 'difficulty': 'easy', 'question': 'What is the name of the Jewish New Year?', 'correct_answer': 'Rosh Hashanah', 'incorrect_answers': ['Elul', 'New Year', 'Succoss']}]}
是不是格式问题?
【问题讨论】:
-
print(data)的输出是什么?请在问题中添加它。 -
完成,我还可以让它显示多个问题,但我现在保持简单。
-
实际数据存在于
data['results']中。迭代data['results']并形成QuestionData。 -
@yogaraj 我已经做了类似
data = requests.get(url = request.data['url']).json()quesdata = data['results']print(quesdata)但不知道如何继续构建QuestionData并将data更改为新的quesdata没有似乎工作。如果您可以在原始视图中编写此内容,那将非常有帮助,在此停留了 2 天...
标签: python django django-models django-rest-framework django-views