Как эффективно структурировать логику преобразования между парами моделей в Django?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как эффективно структурировать логику преобразования между парами моделей в Django?

Сообщение Anonymous »

Я работаю над приложением Django, в котором мне нужно обрабатывать преобразования между парами моделей с разными единицами измерения. Эти модели подобны задачам, которые пользователю необходимо выполнить, и преобразование единиц между двумя задачами пытается сопоставить усилия первой задачи со второй, измеряемые в единицах. Мой текущий подход использует сопоставление пар моделей (около 30 возможных комбинаций) и применяет одно из нескольких вычислений к значению, связанному с from_model, на основе пары и связанной единицы. Мне предоставлен заранее определенный список сопоставлений и вычислений для различных единиц измерения, которые есть в каждой задаче.
Контекст:
Например, здесь это две задачи:
  • Задание А: Написание 1 страницы от руки карандашом (здесь указано значение и единица измерения). измерения).
  • Задание Б: Ввод страниц с помощью компьютера (оно не содержит значения, но содержит единицу измерения)
При преобразовании модели A в модель B потребуется принять значение (например, , 1 страница) и возвращать эквивалент с точки зрения усилий (например, ввод 3 страниц можно считать эквивалентом рукописного ввода 1 страницы).
Вот моя текущая реализация:

Код: Выделить всё

from django.test import TestCase
from app.myapp.models import MyModel

def convert_units(value, from_model, to_model, unit, conversion_map):
try:
conversion_function = conversion_map[(from_model, to_model)][unit]
return conversion_function(value)
except KeyError:
return None

class ConversionTest(TestCase):

def setUp(self):
self.model_a = MyModel.objects.create(name='writing_by_hand')
self.model_b = MyModel.objects.create(name='typing')
self.conversion_map = {
('writing_by_hand', 'typing'): {
'pages': lambda x: x * 3
},
}

def test_convert_units(self):
value = 1
model_a_to_model_b = convert_units(value, self.model_a.name, self.model_b.name, 'pages', self.conversion_map)
self.assertEqual(model_a_to_model_b, value * 3)
self.assertIsNotNone(model_a_to_model_b)
Есть ли более эффективный и удобный способ структурировать эту логику преобразования? Реальное приложение имеет несколько десятков пар и 2-5 единиц измерения. Каждая пара может иметь более одной единицы измерения.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-django
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Могу ли я написать всю свою игровую логику в функции SpriteKit update(_:), если я смоделировал всю игровую логику с помо
    Гость » » в форуме IOS
    0 Ответы
    172 Просмотры
    Последнее сообщение Гость
  • Django-Allauth с парами
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Как наиболее эффективно структурировать данные, полученные из базы данных? [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Преобразование коллекции моделей в массив моделей
    Гость » » в форуме Php
    0 Ответы
    91 Просмотры
    Последнее сообщение Гость
  • Получение меток классов моделей из предварительно обученных моделей torchvision
    Anonymous » » в форуме Python
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»