Если объект ClientDetails должен когда-либо ассоциироваться только с одним объектом Client, тогда я бы изменил ваш FK на OneToOneField, который предоставит вам аккуратный обратный метод доступа, который может когда-либо связываться только между данным клиентом и его связанными ClientDetails , Тогда вы можете сделать:
try:
return self.clientdetails.last_name
except ClientDetails.DoesNotExist:
##handle it here, returning a graceful message
В качестве альтернативы, если вы сохраните его как FK, вам придется сделать что-то вроде:
try:
self.clientdetails_set.all()[0].last_name
except IndexError, e:
## handle exception here
но использование FK здесь является хрупкой и не очень хорошей формой (поскольку обработка исключений подразумевает: если ничего не возвращено, то вы получите IndexError. Кроме того, может быть несколько объектов ClientDetails, связанных с этим клиентом и вы получите здесь только детали первого.)
Итак, я действительно рекомендовал бы использовать OneToOneField вместо этого FK. (Все OneToOneField - это в основном FK с установленным unique=True
и некоторыми более аккуратными аксессуарами, чем стандартные FK)