2011-06-15 130 views
1

我已将UserProfile链接到user。但是,我不喜欢不得不在模板中来回跳转以获取first_name,last_name等。我想使用User模型仅用于auth-related素材,而UserProfile用于与用户有关的所有信息(大多数是显示器的用户信息)。在Django中扩展用户模型

我想知道如果有人可以评估我目前的模型是怎么样的,我可以在哪里改进或者哪里是多余的,等等。谢谢。

class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    network = models.ForeignKey(Network) 
    location = models.CharField(max_length=100, blank=True) 
    graduation = models.IntegerField(blank=True, null=True, choices=YEAR) 
    headline = models.CharField(max_length=100, blank=True,) 
    positions = models.ManyToManyField(Position, through ='Timestamp', blank=True) 
    bio = models.TextField(max_length=1000, blank=True) 

    @property 
    def get_first_name(self): 
     return self.user.first_name 

    @property 
    def get_last_name(self): 
     return self.user.last_name 

    def get_full_name(self): 
     return self.user.get_full_name 

    @property 
    def get_date_joined(self): 
     return self.user.date_joined  

回答

1

不要在属性上使用“get”前缀。另外,不要忘记你无法查询属性,所以你需要加入User。也许你可能想要add some custom queries to your manager

+0

感谢您的评论和指针,无法查询这些只读的字段。我需要添加什么才能做到像UserProfile.objects.order_by('first_name','last_name')'? – David542 2011-06-16 06:08:18

+1

[“查找跨越关系”](https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships) – 2011-06-16 06:09:45

+0

非常感谢。 'UserProfile.objects.order_by(' - user__last_name')' – David542 2011-06-16 06:15:40