День добрый! Подскажите, как фен-шуйно реализовать следующую структуру данных:

Есть набор элементов, заранее прописанный в исходниках, каждый элемент имеет свой уникальный метод. Например, это может быть список сайтов, и каждый сайт имеет свой метод парсинга. Вобщем, это набор предопределенных объектов, каждый из который имеет свой уникальный метод. Поля у всех элементов одинаковые.

Потом ко всем этим элементам нужно обращаться через foreign key из другой таблицы.

НАПРИМЕР, как это можно сделать.

Технически это можно сделать, создав класс models.Model, и в его наследниках переопределить наш метод - используя полиморфизм. Но получится не очень красиво - будет создано по целой таблице на инстанс (а инстанс нам нужен только один):

"""
ИЛЛЮСТРАЦИЯ МЫСЛИ
"""
class BaseObject(models.Model):
    field1 = models.CharField()
    field2 = models.CharField()

class UniquieObject1(BaseObject):
    def get_value(self):
        return 10

class UniquieObject2(BaseObject):
    def get_value(self):
        return 20

class Engine(models.Model):
    name = models.CharField()
    object = models.ForeignKey(BaseObject)

Хорошо бы, если бы как-то ForeignKey указывал на набор объектов. Пользователю редактировать эти объекты не нужно, они создаются раз и навсегда при написании кода.

Извиняюсь, если несколько сумбурно описал, задавайте наводящие вопросы)))

PS Добавлю для ясности: в итоге нужно получить

objects = Engine.objects.all()
for i in objects:
    i.object.get_value()   #<----- вызывает метод, соответствующий 
                    # объекту (UniquieObject1 или UniquieObject2)