ModelChoiceFields предназначены для выбора между выбором существующих экземпляров модели. Это почти всегда лучше всего представляется какой-либо формой поля Select.
Это говорит о том, что у вас действительно есть FK от адреса к postal_code, как вы намекаете. Что вы храните в таблице PostalCode, чтобы оправдать дополнительную таблицу, которую необходимо объединить для каждого запроса, относящегося к адресу?
В большинстве случаев postal_code должен быть просто CharField, и в этом случае, если вы хотите проверить, является ли значение допустимым, вы можете использовать атрибут choices
со списком допустимых почтовых индексов. Имейте в виду, что ведение списка действительных почтовых индексов вручную - огромная проблема.
Если у вас действительно есть таблица PostalCode и вы думаете, что это хорошая идея (а в некоторых случаях это может быть), вы можете рассмотреть возможность фактического использования postal_code в качестве первичного ключа, а не автоинкремента по умолчанию, поскольку он обязательно уникален, что делает данные более экспортируемы и решают вашу проблему с проверкой.