Django model


 
from django.db import models
# Create your models here.
class Question_Simple(models.Model):
    ANSWER=(
        ('A','A'),
        ('B','B'),
        ('C','C'),
        ('D','D'),
    )
    CHAPTER={
        ('A','第一章节'),
        ('B','第二章节'),
        ('C','第三章节'),
        ('D','第四章节'),
        ('E','第五章节'),
        ('F','第六章节'),
        ('G','第七章节'),
        ('H','第八章节'),
        ('I','第九章节'),
        ('J','第十章节'),
    }
    id = models.AutoField(primary_key=True)
    chapter=models.CharField('章节',max_length=10,choices=CHAPTER)
    title=models.TextField('题目')
    optionA=models.CharField('A选项',max_length=30)
    optionB=models.CharField('B选项',max_length=30)
    optionC=models.CharField('C选项',max_length=30)
    optionD=models.CharField('D选项',max_length=30)
    answer=models.CharField('答案',max_length=10,choices=ANSWER)
    class Meta:
        db_table='question'
        verbose_name='单项选择题库'
        verbose_name_plural=verbose_name
    def __str__(self):
        return '<%s:%s>'%(self.chapter,self.title);

img


想问一下,如何保留章节这个下拉选项功能,同时让下拉显示的章节从一到十按顺序排列

CHAPTER改成数组,要不set是无序的,得不到题主要的1~10效果。要么在客户端用js排序下更新select的option内容
示例代码如下

img

<select id="CHAPTER">
    <option>第十章</option>
    <option>第三章</option>
    <option>第六章</option>
    <option>第七章</option>
</select>
<script>
    //内容数字对应
    var kv = { '第一章': 1, '第二章': 2, '第三章': 3, '第四章': 4, '第五章': 5, '第六章': 6, '第七章': 7, '第八章': 8, '第九章': 9, '第十章': 10}
    var s = document.getElementById('CHAPTER'), opts = Array.from(s.options);
    opts.sort(function (a, b) {
        return kv[a.text]-kv[b.text]
    });
    for (var opt of opts) s.appendChild(opt)
</script>

img


有帮助或启发麻烦点下【采纳该答案】,谢谢~~有其他问题可以继续交流~

1.可以试试将 CHAPTER 改成元组嵌套再 翻转
2.将A,B,C.....对应的章节倒序对应

排序方法有两个。
sort()
用法:list.sort()。直接对list操作排序。
sorted()
用法:sorted(list)。有返回值,返回排序后的列表