У меня есть модель MyModelA
, которая использует перечисление MyChoices
, и у меня также есть другая модель MyModelB
, которая должна выполнять некоторую работу с использованием сохраненных целых чисел. Я знаю, что могу использовать шесть целочисленных полей, но мне не нравится громоздкий подход. Есть ли способ сохранить данные в одном поле?
class MyChoices(models.IntegerChoices):
OPTION_A = 1
OPTION_B = 2
OPTION_C = 3
class MyModelA(models.Model):
# how do I rewrite this to look cooler?
int_a = models.IntegerField(...)
int_b = models.IntegerField(...)
int_c = models.IntegerField(...)
int_d = models.IntegerField(...)
int_e = models.IntegerField(...)
int_f = models.IntegerField(...)
class MyModelB(models.Model):
choice = models.IntegerField(choices=MyChoices.choices)
model_a = models.ForeignKey(MyModelA, ...)
def what_i_want_to_do(self):
if self.choice == MyChoices.OPTION_A:
return self.model_a.int_a + self.model_a.int_b
elif self.choice == MyChoices.OPTION_B:
...
print(MyModelB.objects.all().get(pk=1).what_i_want_to_do())