Внешний ключ является ссылочным ограничением между TWO таблицами, поэтому вы не можете иметь один столбец, ссылающийся на 3 столбца в 3 разных таблицах.
см .: http://en.wikipedia.org/wiki/Foreign_key
Вы все делаете по-другому, я думаю, что код будет лучше всего продемонстрировать:
class Category(models.Model):
TYPES = (
('audio', 'audio'),
('overlay', 'overlay'),
('html', 'html'),
)
type = models.CharField(choices=TYPES)
class Audio(models.Model):
category = models.OneToOneField(Category)
additional_column_for_audio = models. ...
#...
# same for overlay and html
class Item(models.Model):
# id is automatically added
category = models.ForeignKey(Category)
тогда вы можете перебирать элементы и делать что-то вроде этого:
{% for item in items %}
{% if item.category.type == "audio" %}
{{ item.category.audio.additional_column_for_audio }}
{% endif %}
{% endfor %}