Moj*_*imi 5 django django-models
有没有办法按代码顺序获取它们,或者为 Django 模型的字段设置顺序?当我调用MyModel._meta.get_fields()它们时,它们是无序的(尽管看起来是相同的“无序”顺序,只要您不重置服务器就好了)。
如果可能,无需更改覆盖任何方法的基础库
我已经阅读了关于表单https://docs.djangoproject.com/en/1.9/ref/forms/api/#django.forms.Form.order_fields 中的订购,但不是在模型本身中
元属性“ordering”仅在进行查询时定义对象的默认顺序
小智 5
实际上get_fields()以固定顺序返回字段。
看看 django示例:
>>> from django.contrib.auth.models import User
>>> User._meta.get_fields()
(<ManyToOneRel: admin.logentry>,
<django.db.models.fields.AutoField: id>,
<django.db.models.fields.CharField: password>,
<django.db.models.fields.DateTimeField: last_login>,
<django.db.models.fields.BooleanField: is_superuser>,
<django.db.models.fields.CharField: username>,
<django.db.models.fields.CharField: first_name>,
<django.db.models.fields.CharField: last_name>,
<django.db.models.fields.EmailField: email>,
<django.db.models.fields.BooleanField: is_staff>,
<django.db.models.fields.BooleanField: is_active>,
<django.db.models.fields.DateTimeField: date_joined>,
<django.db.models.fields.related.ManyToManyField: groups>,
<django.db.models.fields.related.ManyToManyField: user_permissions>)
Run Code Online (Sandbox Code Playgroud)
我重复了这段代码并得到了相同的结果。如果你再深入研究一下源码,你会发现顺序是这样的:
parent以递归方式获取每个字段。所有这一切都表明,如果您在模型中的某个其他普通字段之前定义某个普通字段,那么您将始终以相同的顺序在get_fields()结果中获得它。
但是要小心依赖未记录的行为,因此将来可能会在没有任何警告的情况下对其进行更改。
| 归档时间: |
|
| 查看次数: |
3205 次 |
| 最近记录: |