Ответ 1
Да и нет. Связь FK описывается на уровне класса и отражает ассоциацию FK в базе данных, поэтому вы не можете добавлять дополнительную информацию непосредственно в параметр FK.
Вместо этого я бы рекомендовал иметь строку, содержащую имя поля в другой таблице:
class ValidationRule(models.Model):
other = models.ForeignKey(OtherModel)
other_field = models.CharField(max_length=256)
Таким образом, вы можете получить поле с помощью:
v = ValidationRule.objects.get(id=1)
field = getattr(v, v.other_field)
Обратите внимание: если вы используете поля "Множество ко многим" (а не "один ко многим" ), существует встроенная поддержка для создания пользовательских промежуточных таблиц для хранения метаданных с помощью through.