У меня есть две модели Django: Tomato и Potato. Оба они используются несколько раз в моем проекте.
Недавно я создал поле внешнего ключа в третьей модели, ShoppingBag, которому должно быть разрешено содержать один экземпляр из Tomato или Potato.< /p>
Мой первый подход заключался в создании пустого (поскольку Tomato и Potato не имеют общих полей) суперкласса Buyable, который наследует PolymorphicModel.
Затем я установил модель, на которую ссылается в ShoppingBag.myforeignkey, чтобы принимать экземпляры Buyable, и я подумал, что на этом все.
Сейчас я сталкиваюсь с множеством ошибок, в основном из-за того, что Potato.id и Tomato.id заменен на .buyable_ptr, а уже существующим полям внешнего ключа и m2m для Potato и Tomato это не очень нравится.
Я хотел спросить, есть ли официальный способ справиться с этим переключением между родителями или альтернативный, более простой способ решения этой проблемы.
Я создал функцию, которая генерирует новый экземпляр суперкласса и возвращает его идентификатор. Затем я установил эту функцию в качестве значения по умолчанию в файле миграции. Решение не сработало, поскольку сгенерированный идентификатор всегда был равен 1.
import Buyable
def generate_id():
new_instance = Buyable()
new_instance.save()
return new_instance
Подробнее здесь: https://stackoverflow.com/questions/790 ... rphicmodel
Как изменить родительский класс с models.Model на PolymorphicModel ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение