我有几个使用多表继承的模型。像这样。
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)
这会是一个很好的解决方案吗?
答案 0 :(得分:1)
您需要的是Group.title
和UserGroup.title
在独立的表格中。您的设计存在的问题是,在Django多表继承中,子表从不独立于其父表;你需要让Group
和UserGroup
继承自另一个模型,具体的或抽象的,然后让两个孩子都声明一个title
字段。