多表继承;仅限儿童的独特标题

时间:2012-12-04 22:40:57

标签: django django-models

我有几个使用多表继承的模型。像这样。

class Group(models.Model):  
    title =  models.CharField(unique=True,max_length=255)


class UserGroup(Group):  
   user = models.ForeignKey(User)  
   def save(self, *args, **kwargs):  
       self.title = self.user.username  
       return super(Group, self).save(*args, **kwargs)  

用户组需要具有唯一标题,群组也是如此。但是,如果UserGroup与组具有相同的标题,则无关紧要。事实上,在某些情况下会发生这种情况。我怎么能这样做?

编辑: 如果我使用save方法创建命名空间该怎么办。

class UserGroup(Group):  
   user = models.ForeignKey(User)  
   def save(self, *args, **kwargs):  
       self.title = "user:" + self.user.username  
       return super(UserGroup, self).save(*args, **kwargs) 

class Group(models.Model):  
    title =  models.CharField(unique=True,max_length=255)
    def save(self, *args, **kwargs):  
       self.title = "group:" + self.title
       return super(Group, self).save(*args, **kwargs)  

这会是一个很好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

您需要的是Group.titleUserGroup.title在独立的表格中。您的设计存在的问题是,在Django多表继承中,子表从不独立于其父表;你需要让GroupUserGroup继承自另一个模型,具体的或抽象的,然后让两个孩子都声明一个title字段。