Django模型-继承字段(Sorta?)
如何构造RegisteredSubscriber模型以实现下面的伪代码中描述的功能 我想我可以为每个字段实现一个函数,但这似乎不正确,而且有点费力。想法Django模型-继承字段(Sorta?),django,model,Django,Model,如何构造RegisteredSubscriber模型以实现下面的伪代码中描述的功能 我想我可以为每个字段实现一个函数,但这似乎不正确,而且有点费力。想法 61 class RegisteredSubscriber(Subscriber): 62 user = models.ForeignKey(User) 63 first_name = self.user.first_name 64 last_name = self.user.last_name 65
61 class RegisteredSubscriber(Subscriber):
62 user = models.ForeignKey(User)
63 first_name = self.user.first_name
64 last_name = self.user.last_name
65 email = self.user.email
66
67 class AnonymousSubscriber(Subscriber):
68 first_name = models.CharField(max_length = 100)
69 last_name = models.CharField(max_length = 100, blank = True)
70 email = models.EmailField(unique = True)
好的,这是我想要的功能,但我确定它不合适。思想?形式化方法是什么?我是否犯了设计错误
59 class RegisteredSubscriber(Subscriber):
60 user = models.ForeignKey(User, unique = True)
61 first_name = 'candy'
62 last_name = 'candy'
63 email = 'candy'
64
65 def __init__(self, *args, **kwargs):
66 super(RegisteredSubscriber, self).__init__(*args, **kwargs)
67
68 if self.id:
69 self.first_name = self.user.first_name
70 self.last_name = self.user.last_name
71 self.email = self.user.email
72
73 def __unicode__(self):
74 return u'%s %s' % (self.first_name, self.last_name)
由于您已经与用户建立了ForeignKey关系,我不理解在RegisteredSubscriber模型中需要有first_name、last_name和email字段,除非我遗漏了什么。如果您想使用RegisteredSubscriber实例访问first_name etc字段,ForeignKey关系允许您使用。
例如:用户名 但是为什么不取名字,姓。。。从RegisteredSubscriber中已有的用户字段?原因是,假设我有一个subscriber对象sub。在这两种情况下,我都希望使用sub.first_名称访问first_名称,如果sub是RegisteredSubscriber,则不使用sub.user\u firstname或sub.user.first\u name。是否要在RegisteredSubscriber表中存储该用户的first\u name等的副本,还是像sub.first\u name一样访问它?