更改子类模型的 table 中的列顺序
Change the column order in a table for a subclassed model
在 peewee 中有子类模型的情况下,如何告诉 peewee 在 table 中创建列的顺序?在下面的例子中,顺序是 "b, c, a",但我想要 "a, b, c".
class BaseModel(Model):
b = CharField()
c = CharField()
class Table(BaseModel):
a = CharField()
database.create_table(Table)
顺序很重要,因为这是我们测试新更改的产品沙盒区域。 UI 非常通用,但用户仍然需要能够使用该产品,因此有必要进行一些可用性增强,例如列顺序。
当 peewee 创建一个 table 时,它 calls get_fields
, which calls get_sorted_fields
, which uses the _sort_key
每个字段,这是基于字段定义的顺序。子 class 中的字段定义在父 class 中的字段之后,因此排序较低。
更改在 table 中创建列的顺序的唯一方法是子class Field
或 ModelOptions
(和 BaseModel
使用 subclassed ModelOptions
等),覆盖相关代码以应用不同的排序顺序,并在所有地方使用新的 subclasses。
一个更实用和可维护的解决方案是只在侧面维护一个列表,按照您想要的顺序命名列,然后将其发送到前端以告诉它如何显示列。添加新列时,只需在该列表中以正确的顺序添加即可。
在 peewee 中有子类模型的情况下,如何告诉 peewee 在 table 中创建列的顺序?在下面的例子中,顺序是 "b, c, a",但我想要 "a, b, c".
class BaseModel(Model):
b = CharField()
c = CharField()
class Table(BaseModel):
a = CharField()
database.create_table(Table)
顺序很重要,因为这是我们测试新更改的产品沙盒区域。 UI 非常通用,但用户仍然需要能够使用该产品,因此有必要进行一些可用性增强,例如列顺序。
当 peewee 创建一个 table 时,它 calls get_fields
, which calls get_sorted_fields
, which uses the _sort_key
每个字段,这是基于字段定义的顺序。子 class 中的字段定义在父 class 中的字段之后,因此排序较低。
更改在 table 中创建列的顺序的唯一方法是子class Field
或 ModelOptions
(和 BaseModel
使用 subclassed ModelOptions
等),覆盖相关代码以应用不同的排序顺序,并在所有地方使用新的 subclasses。
一个更实用和可维护的解决方案是只在侧面维护一个列表,按照您想要的顺序命名列,然后将其发送到前端以告诉它如何显示列。添加新列时,只需在该列表中以正确的顺序添加即可。