Как правильно получить объект производного класса от базового объекта в Django? - PullRequest
2 голосов
/ 07 февраля 2012

Я новичок в Джанго, и вот вопрос:

У меня есть модель класса:

def Client(models.User) # django.contrib.auth.User
   company_name=models.CharField()

Как я могу получить объект Client, когда у меня есть объект user (а user - client)? Одним из способов является фильтрация объектов по имени пользователя:

user=request.user
client=Client.objects.filter(username=user.username)

Но я думаю, что есть какой-то другой и более красивый способ сделать это в django, потому что пользователь является клиентом (они связаны один в один в базе данных), есть ли один?

1 Ответ

2 голосов
/ 07 февраля 2012

Из документации по наследованию :

Если у вас есть User, который также является Client, вы можете перейти от объекта User к объекту Client, используя строчную версию названия модели:

my_user = User.objects.get(username = 'foobar')
client = my_user.client

Если экземпляр User не является Client, вы получите исключение Client.DoesNotExist.

...