max_length 上的 Django 过滤器
django filter on max_length
您好,有没有一种方法可以在 Django 中过滤字段属性而不是字段值?
例如,对于我的 GUI 布局,我想知道按 max_length 排序的字段的顺序。我的模型:
class Person(models.Model):
name1 = models.CharField(max_length=220, default="")
name2 = models.CharField(max_length=90, default="")
name3 = models.CharField(max_length=30, default="")
name4 = models.CharField(max_length=130, default="")
name5 = models.CharField(max_length=10, default="")
我希望能够找到模型中最长的 CharField 的长度,在本例中为 220。我该怎么做?
这只是一个简化的示例,但与我需要的功能类似。为了深入了解我所面临的现实情况:我向我的模型添加了一个自定义属性 "gui_serial_number",我有部分静态模型,其中包含以下字段:
a = CharField(gui_serial_number=10...)
b = CharField(gui_serial_number=20...)
....
n = CharField(gui_serial_number=50...)
我制作了一个动态界面,其中可以将字段动态添加到模型中(使用 type() 和 add_to_class() 等),用户可以在 GUI 中指定字段的位置放置。我希望能够在没有给出 gui_serial_number 时自动将 gui_serial_number 定义为 "max+10"。
可能不够漂亮,但是求Person
最长的CharField的长度可以这样做:
from operator import attrgetter
sorted([field for field in Person._meta.fields if isinstance(field, models.CharField)],
key=attrgetter('max_length'))[-1].max_length
您好,有没有一种方法可以在 Django 中过滤字段属性而不是字段值?
例如,对于我的 GUI 布局,我想知道按 max_length 排序的字段的顺序。我的模型:
class Person(models.Model):
name1 = models.CharField(max_length=220, default="")
name2 = models.CharField(max_length=90, default="")
name3 = models.CharField(max_length=30, default="")
name4 = models.CharField(max_length=130, default="")
name5 = models.CharField(max_length=10, default="")
我希望能够找到模型中最长的 CharField 的长度,在本例中为 220。我该怎么做?
这只是一个简化的示例,但与我需要的功能类似。为了深入了解我所面临的现实情况:我向我的模型添加了一个自定义属性 "gui_serial_number",我有部分静态模型,其中包含以下字段:
a = CharField(gui_serial_number=10...)
b = CharField(gui_serial_number=20...)
....
n = CharField(gui_serial_number=50...)
我制作了一个动态界面,其中可以将字段动态添加到模型中(使用 type() 和 add_to_class() 等),用户可以在 GUI 中指定字段的位置放置。我希望能够在没有给出 gui_serial_number 时自动将 gui_serial_number 定义为 "max+10"。
可能不够漂亮,但是求Person
最长的CharField的长度可以这样做:
from operator import attrgetter
sorted([field for field in Person._meta.fields if isinstance(field, models.CharField)],
key=attrgetter('max_length'))[-1].max_length