And*_*kov 6 django django-models
如何访问有序的模型字段列表?因为model_instance._meta.fields返回的字段没有m2m,但在管理视图中,字段顺序与它们在类中定义的完全相同.(比如管理网站上的编辑表格)?
尝试
sorted(model_instance._meta.fields + model_instance._meta.many_to_many,
key=lambda x:x.creation_counter)
Run Code Online (Sandbox Code Playgroud)
如果在正常字段之后定义M2M字段,则可以fields + many_to_many直接使用,因为它们都已在声明排序中.
更新
如果您更愿意使用operator.attrgetter()而不是lambda,那么性能差异是微不足道的.但是attrgetter没有保证要更快:
In[1]: from django.contrib.auth.models import User
In[2]: fields = User._meta.fields + User._meta.many_to_many
In[3]: %timeit sorted(fields, key=lambda x:x.creation_counter)
100000 loops, best of 3: 6.47 us per loop
In[4]: from operator import attrgetter
In[5]: %timeit sorted(fields, key=attrgetter('creation_counter'))
100000 loops, best of 3: 9.17 us per loop
In[6]: ag=attrgetter('creation_counter')
In[7]: %timeit sorted(fields, key=ag)
100000 loops, best of 3: 8.68 us per loop
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |