2011-06-15 245 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