В Django, как создавать ссылки на различные модели и быть независимым от того, что это за модель? - PullRequest
0 голосов
/ 10 октября 2010

Я относительно новичок в Django / Pinax и столкнулся с этой специфической ситуацией. Скажем, у меня есть модель "Автомобиль". Теперь каждый экземпляр «Транспортного средства» имеет некоторые атрибуты, относящиеся к «транспортному средству», но он также имеет ссылку на экземпляр одного из классов автомобилей, где «автомобили» могут быть одной из многих моделей, таких как «автомобиль», «лодка» "самолет" и т. д.

Так что, когда я создаю этот объект «Автомобиль», я хочу быть независимым от того, какой экземпляр класса это относится к.

Но когда я получу все экземпляры транспортного средства, я смогу получить доступ к содержанию упомянутого автомобиля.

Как мне это сделать? Я искал возможные решения для этого, но единственное, что я придумал, это использование фреймворка «ContentTypes» для django. Но это влечет за собой внесение изменений в классы, к которым я хочу обратиться, а именно. «автомобиль», «лодка», «самолет», но это немного сложно в моем случае, потому что в некоторых случаях это внешние приложения.

Любые указатели для меня?

1 Ответ

2 голосов
/ 10 октября 2010

Решение - общий механизм внешнего ключа, который вы упомянули. Это не требует внесения изменений в ссылочные объекты. Вы просто добавляете общий внешний ключ из Vehicle к другим типам объектов, а затем получаете к нему доступ, независимо от того, какой это тип объекта.

Но, похоже, вы пытаетесь реализовать наследование. В django решение состоит в том, чтобы использовать модель наследования :

class Vehicle(models.Model):
    ...

class Car(Vehicle):
    ...
...