Как сохранить кортеж кортежей с помощью Django ORM? - PullRequest
0 голосов
/ 13 июля 2020

У меня есть модель 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...