2017-03-09 123 views
0

我有以下型號Django模型:父模型訪問子模型場

from django.contrib.auth.models import User 

User = settings.AUTH_USER_MODEL  

class UserProfile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') 

class Tutor(UserProfile): 
    # tutor_fields here 

從用戶對象我如何可以訪問導師?是否與user.profile

user.profile.select_related('tutor')似乎不起作用。

回答

0

OneToOneFieldForeignKey一樣工作,除了unique=True,您不需要指定related_name(您可以指定是否要更改它)。

爲您例如:

from django.contrib.auth.models import User 

User = settings.AUTH_USER_MODEL  

class UserProfile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile') 

class Tutor(UserProfile): 
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE, related_name='tutor') 
    details = models.CharField(max_length=100) 

注:使用ForeignKey如果你想/需要許多UserProfile一個Tutor,否則,如果你想要一個(也是唯一一個)Tutor一個UserProfile

而且您可以通過UserProfile.tutor.details訪問Tutor bu UserProfile