开发者

Extending the User model in Django

I've linked a UserProfile to开发者_Python百科 a user. However, I do not like having to jump back and forth in the templates to get first_name, last_name, etc. I would like to use the User model for only auth-related stuff, and UserProfile for all information related to the user (mostly, the display of the user information).

I was wondering if someone could evaluate how my current UserProfile model is, and where I could improve it or where it is redundant, etc. Thank you.

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    


Don't use the "get" prefix on properties. Also, don't forget that you can't query on properties, so you'll need to join to User for those. Perhaps you may want to add some custom queries to your manager for that.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜