#python #django #django-models
#python #django #django-модели
Вопрос:
Кажется, я не могу найти способ исследовать это.
У меня есть этот класс размеров, который объединяет различные варианты размера в общие категории (маленькие, средние, большие и т. Д.). В результате я закончил с этим смехотворно длинным перечислением размеров, которые я определил. Пока это работает, мне все еще было интересно, был ли более разумный способ, которым я мог бы выполнить это.
Действительно ли TextChoices лучший способ?
class Size(models.TextChoices):
xs = "xs"
x_small = "x-small"
xsmall = "xsmall"
s00 = "00"
s0 = "0"
s1 = "1"
s2 = "2"
w23 = "w23"
w24 = "w24"
s = "s"
sm = "sm"
small = "small"
s3 = "3"
s4 = "4"
s5 = "5"
s6 = "6"
w25 = "w25"
w26 = "w26"
m = "m"
md = "md"
med = "med"
medium = "medium"
s7 = "7"
s8 = "8"
s9 = "9"
s10 = "10"
w27 = "w27"
w28 = "w28"
l = "l"
lg = "lg"
large = "large"
s11 = "11"
s12 = "12"
s13 = "13"
s14 = "14"
w29 = "w29"
w30 = "w30"
s1x = "1X"
s1x = "1XL"
xl = "xl"
x_large = "x-large"
xlarge = "xlarge"
s15 = "15"
s16 = "16"
s17 = "17"
s18 = "18"
w31 = "w31"
w32 = "w32"
s2x = "2X"
s2x = "2XL"
xxl = "xxl"
xx_large = "xx-large"
xxlarge = "xxlarge"
s19 = "19"
s20 = "20"
s21 = "21"
s22 = "22"
w33 = "w33"
w34 = "w34"
s3x = "3X"
s3x = "3XL"
xxxl = "xxxl"
s23 = "23"
s24 = "24"
s25 = "25"
s26 = "26"
w35 = "w35"
w36 = "w36"
s4x = "4X"
s4x = "4XL"
s27 = "27"
s28 = "28"
s29 = "29"
s30 = "30"
w37 = "w37"
w38 = "w38"
s5x = "5X"
s5x = "5XL"
s31 = "31"
w39 = "w39"
w40 = "w40"
sos = "one-size"
size = models.CharField(
max_length=11,
choices=Size.choices,
default=Size.s00,
)
def is_one_size(self):
return self.size == self.Size.os
def is_xs(self):
return self.size in {
self.Size.s00,
self.Size.s0,
self.Size.s1,
self.Size.w23,
self.Size.w24,
self.Size.xs,
self.Size.xsmall,
self.Size.x_small,
}
def is_sm(self):
return self.size in {
self.Size.s2,
self.Size.s3,
self.Size.s4,
self.Size.s5,
self.Size.w25,
self.Size.w26,
self.Size.w27,
self.Size.w28,
self.Size.s,
self.Size.sm,
self.Size.small,
}
def is_md(self):
return self.size in {
self.Size.s6,
self.Size.s7,
self.Size.s8,
self.Size.s9,
self.Size.w29,
self.Size.w30,
self.Size.w31,
self.Size.w32
}
def is_lg(self):
return self.size in {
self.Size.s10,
self.Size.s11,
self.Size.s12,
self.Size.s13,
}
def is_xl(self):
return self.size in {
self.Size.s14,
self.Size.s15,
self.Size.s16,
self.Size.s17,
self.Size.w33,
self.Size.w34,
self.Size.w35,
self.Size.w36
}
def is_2x(self):
return self.size in {
self.Size.s18,
self.Size.s19,
self.Size.s20,
self.Size.s21,
self.Size.w37,
self.Size.w38,
self.Size.w39,
self.Size.w40
}
def is_3x(self):
return self.size in {
self.Size.s22,
self.Size.s23,
self.Size.s24,
self.Size.s25,
}
def is_4x(self):
return self.size in {
self.Size.s26,
self.Size.s27,
self.Size.s28,
self.Size.s29,
}
def is_5x(self):
return self.size in {
self.Size.s30,
self.Size.s31,
}
Комментарии:
1. Привет, это, вероятно, лучше подходит для проверки кода , хотя вам следует ознакомиться с рекомендациями по размещению там.
2. Это выглядит неправильно. Вы определяете поле для выбора текста, а не модель. Вы вырезали слишком много кода?