0

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

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)  

UserGroups 需要有唯一的标题,Groups 也是如此。但是用户组是否与组具有相同的标题并不重要。事实上,这应该在某些情况下发生。我怎样才能做到这一点?

编辑:如果我使用 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)  

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

4

1 回答 1

1

你需要的是Group.title独立UserGroup.title的桌子。您设计的问题在于,在 Django 多表继承中,子表永远不会独立于它们的父表;您将需要同时创建GroupUserGroup从另一个模型继承,无论是具体的还是抽象的,然后让两个孩子都声明一个title字段。

于 2012-12-04T23:33:12.770 回答