2

我在Django的新人,在这里是问题:如何从Django中的基础对象正确获取派生类对象?

我的模型类:

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

我怎么能得到客户对象时,我有用户对象(user是客户端)?一种方式是通过用户名来过滤对象:

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

但我认为有一些不同的,更漂亮的方法在Django要做到这一点,因为用户是客户端(它们与一到一个数据库),是那里吗?

回答

2

documentation on inheritance

如果你有一个User这也是一个Client,你可以从User对象到Client目的是通过使用型号名称的小写形式:

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

如果User实例不是Client,你会得到一个Client.DoesNotExist例外。

+1

这没有帮助。如果我知道我有一个'Client',那么我可以首先使用client = Client.objects.get(....)'。在大多数情况下,你没有N个孩子班。 – guettli 2015-06-09 11:54:04

相关问题