python - django:按字母顺序对表格数据进行排序
问题描述
我所拥有的是:
模型.py:
class Address(custom_mixins.SiteAwareAbstractModel):
states = State.objects.all()
CHOICES = list()
for state in states:
CHOICES.append((state.code, state.name))
CHOICES = tuple(CHOICES)
state_name = models.CharField(max_length=80, choices=CHOICES)
然后是状态类
class State(models.Model):
name = models.CharField(max_length=256)
code = models.CharField(max_length=2, null=True)
created_at = models.DateTimeField(auto_now_add=True)
modified_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['-id']
def __str__(self):
return '{}'.format(self.name)
这将呈现所有状态,因为它们存储在表中。我想要的是按字母顺序显示所有状态。我试着做:
states = State.objects.all().order_by(
'name').values_list(
'code', flat=True)
但这引发了错误
CHOICES.append((state.code, state.name)) AttributeError: 'str' object has no attribute 'code'
解决方案
尝试:
states = State.objects.all().values_list('code', 'name', named=True).order_by('name')
for state in states:
CHOICES.append((state.code, state.name))
推荐阅读
- javascript - 如何导入 SVG 文件以便访问其属性?
- java - Cucumber Runner 类抛出不安全的 http url TestNGException,但是我的 .feature 文件和 testng.xml 将毫无问题地运行该套件
- wpf - Why twoway binding doen't work as expected?
- java - 如何显示共享首选项中的随机字符串?
- python - NameError:名称“wordnet”未定义
- c# - 如何检查服务总线上的就绪探测?
- python - PyQT5 setRect 在 QGraphicsScene 中移动原点
- google-analytics - 谷歌分析用户 ID 视图中的活跃用户
- arrays - 从 tcl 中的数组中取消设置元素
- java - 在另一个类中实例化对象时出现 StackOverflowError