Я создаю приложение преобразования идентификатора продукта. У меня есть две модели, представляющие два стиля ID:Включить сторонний модуль в модели Django
class Id1(models.Model):
number = models.CharField(max_length=10)
converted = models.CharField(max_length=13)
status = models.CharField(max_length=5) # validation status
error = models.CharField(max_length=10) # error message
def __unicode__(self):
return self.number
class Id2(models.Model):
number = models.CharField(max_length=13)
converted = models.CharField(max_length=10)
status = models.CharField(max_length=5) # validation status
error = models.CharField(max_length=10) # error message
def __unicode__(self):
return self.number
Там является третьей стороной Python модуль (не Джанго), что я хотел бы включить в модели Django по двум причинам:
- Он уже предоставляет функции преобразования Мне нужно
- Я хочу использовать OO-подход при выполнении преобразования - создаю экземпляр класса (например, Id1), который инкапсулирует соответствующие данные и методы для этого экземпляра.
модуль Сторонний имеет следующие классы с несколькими полями и методами каждого:
- класс Id (объект)
- класс Id1 (Id)
- класс Id2 (Id)
... и следующие функции верхнего уровня, которые методы класса вызова:
- Защиту проверка
- четкости преобразования
- Защиты calculate_checksum
- Защиты очистить
Однако, я не хочу атрибутов модуля третьего-участника в базе данных; каждая таблица базы данных должна содержать только поля модели Django (число и преобразование).
Как это можно достичь? Если это невозможно, каковы альтернативные способы решения этой проблемы? Делегировать логику с представлением?
[EDIT] Я забыл добавить, что хотел бы использовать методы модуля для инициализации некоторых полей, таких как «преобразованные», «статус» и «ошибка». есть идеи как это сделать?
Непонятно, что вы здесь задаете. Вы хотите использовать существующий код для преобразования/расчета? Тогда почему бы вам просто не назвать эти функции и т. Д. Из методов на модели? – UloPe
Вы правы. Я забыл упомянуть о важном аспекте: я хочу сохранить возвращаемые значения метода обратно в качестве полей модели. Таким образом, пользовательский метод save() будет включать в себя код из модуля, такой как преобразование Id1 в Id2 и сохранение результата в «преобразованном» поле. Исключения для проверки и преобразования будут влиять на два других поля: «статус» и «ошибка». Все это происходит автоматически при инициализации или сохранении объекта. Возможное? – geeljire