我想根据记录数据值限制显示数据
这是我的代码:
型号.py
class Subcategory(models.Model):
subcategory_id = models.BigAutoField(primary_key=True)
subcategory = models.CharField(max_length=40)
class Question(models.Model):
question_id = models.BigAutoField(primary_key=True)
subcategory = models.ForeignKey('Subcategory', models.DO_NOTHING, default=None)
practice_setting = models.ForeignKey('PracticeSetting', models.DO_NOTHING, default=None)
question = models.TextField()
answer = models.CharField(max_length=255)
class PracticeSetting(models.Model):
practice_setting_id = models.BigAutoField(primary_key=True)
num_of_question = models.SmallIntegerField()
序列化程序.py
class SubcategorySerializer(serializers.ModelSerializer):
class Meta:
model = Subcategory
fields = ('subcategory_id',
'subcategory')
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model = Question
fields = ('question_id',
'subcategory',
'practice_setting',
'question',
'answer')
class PracticeSettingSerializer(serializers.ModelSerializer):
class Meta:
model = PracticeSetting
fields = ('practice_setting_id',
'num_of_question')
view.py
@api_view(['GET'])
def subcategory_list(request):
# GET list of subcategory
if request.method == 'GET':
subcategories = Subcategory.objects.all()
subcategory = request.GET.get('subcategory', None)
if subcategory is not None:
subcategories = subcategories.filter(subcategory__icontains=subcategory)
subcategories_serializer = SubcategorySerializer(subcategories, many=True)
return JsonResponse(subcategories_serializer.data, safe=False)
@api_view(['GET'])
def question_list(request):
# GET list of question
if request.method == 'GET':
questions = Question.objects.all()
subcategory = request.GET.get('subcategory', None)
if subcategory is not None:
questions = questions.filter(subcategory__subcategory__icontains=subcategory)
questions_serializer = QuestionSerializer(questions, many=True)
return JsonResponse(questions_serializer.data, safe=False)
@api_view(['GET'])
def practiceSetting_list(request):
# GET list of practiceSetting
if request.method == 'GET':
practiceSettings = PracticeSetting.objects.all()
practiceSetting = request.GET.get('practiceSetting', None)
if practiceSetting is not None:
practiceSettings = practiceSettings.filter(practiceSetting__icontains=practiceSetting)
practiceSettings_serializer = PracticeSettingSerializer(practiceSettings, many=True)
return JsonResponse(practiceSettings_serializer.data, safe=False)
/api/子类别
[
{
subcategory_id: 1,
subcategory: "Mathematics"
},
{
subcategory_id: 2,
subcategory: "History"
}
]
我有两个子类数据,数学和历史
/api/questions?子类别=数学
[
{
question_id: 1,
subcategory: 1,
practice_setting : 1,
question: "10 + 10 = ?",
answer: "20"
},
{
question_id: 2,
subcategory: 1,
practice_setting : 1,
question: "20 + 20 = ?",
answer: "40"
},
{
question_id: 3,
subcategory: 1,
practice_setting : 1,
question: "30 + 30 = ?",
answer: "60"
},
{
question_id: 4,
subcategory: 1,
practice_setting : 1,
question: "40 + 40 = ?",
answer: "80"
},
{
question_id: 5,
subcategory: 1,
practice_setting : 1,
question: "50 + 50 = ?",
answer: "100"
},
{
question_id: 6,
subcategory: 1,
practice_setting : 1,
question: "60 + 60 = ?",
answer: "120"
}
]
在数学问题列表中,我有6个问题
/api/实践设置
[
{
practice_setting_id: 1,
num_of_question: 3
},
{
practice_setting_id: 2,
num_of_question: 5
}
]
在练习设置列表中,我有2个数据,一个有3个问题,另一个有5个问题
我的问题,, 如何根据/api/练习设置中的问题数量限制显示数据
例如num_of_question: 3
因此/api/questions?子类别=Mathematics仅显示3个问题,例如,如果值更改为4,则将显示4个问题
我不知道该怎么做, 我还是一个初学者,需要很多指导,请帮助
要从查询集中获取前3个问题,可以使用如下数组切片
现在,由于还需要检索数据,因此可能需要进行另一个查询,以首先获取
num_of_questions
字段请注意,我依赖于获取与该子类别下的第一个问题相关联的
practice_setting
对象,您可能有其他首选项,但这只是一个示例,您可以根据需要进行修改相关问题 更多 >
编程相关推荐