如何在Django中从基础对象中正确获取派生类对象?

时间:2012-02-07 14:08:46

标签: django django-models relational-database entity-relationship

我是django的新人,问题是:

我有模特课:

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

当我有用户对象(用户是客户端)时,如何获取Client对象?一种方法是按用户名过滤对象:

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

但是我认为在django中有一些不同且更漂亮的方法,因为用户是客户端(他们在数据库中是一对一的),是否存在?

1 个答案:

答案 0 :(得分:2)

来自documentation on inheritance

  

如果您的User也是Client,则可以使用小写版本的UserClient对象转到my_user = User.objects.get(username = 'foobar') client = my_user.client 对象型号名称:

User

如果Client实例不是Client.DoesNotExist,您将获得{{1}}例外。