Я предлагаю вам пойти с той же моделью (выбор). У вас может быть поле с именем choice_type, которое выбирает тип выбора («изображение», «текст», «видео»).
class Choice(models.Model):
answer_type_choices = (
('1','Text'),
('2','Image'),
('3','Video'),
)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_type = model.CharField(max_length=1,choices = answer_type_choices)
choice = models.CharField(max_length=255)
choice_media = models.FileField(upload_to='uploads/')
И при добавлении данных от admin или front у вас может быть форма с некоторой настройкой, которая имеет правила валидации в чистом методе (требуются поля, основанные на типе выбора, валидации поля изображения, валидации видеофайла) на основе choice_type.