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 も同様です。ただし、UserGroup のタイトルが Group と同じかどうかは問題ではありません。事実、これは場合によっては発生するはずです。これどうやってするの?

編集: 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.titleUserGroup.title独立したテーブルにいることです。あなたの設計の問題は、Django のマルチテーブル継承では、子テーブルが親テーブルから独立していないことです。両方を作成し、別のモデル (具体的または抽象的) から継承してから、両方の子にフィールドを宣言Groupさせる必要があります。UserGrouptitle

于 2012-12-04T23:33:12.770 に答える