2016-04-24 9 views
2

GenericForeignKeyフィールドが表示されているモデルでワークフローを一般化したい。Django unique_togetherモデル親クラスのフィールド

だから私は親クラスGFKModelを作成します。

class GFKModel(models.Model): 
    target_content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) 
    target_id = models.PositiveIntegerField() 
    target = GenericForeignKey('target_content_type', 'target_id') 

その後、私はそれを継承する:

class Question(GFKModel): 
    author = models.ForeignKey(User) 
    text = models.TextField() 

    class Meta: 
     unique_together = ('author', 'target_content_type', 'target_id') 

は、私が '著者'、 'target_content_type' と 'TARGET_ID' の両方にunique_together制約を追加する必要があり、マイグレーションエラーのためにそれを行うことはできません:

どうすればいいですか?

答えて

2

私は '抽象' クラスとしてGFKModelの宣言を逃しました:予想通り

class GFKModel(models.Model): 
    target_content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) 
    target_id = models.PositiveIntegerField() 
    target = GenericForeignKey('target_content_type', 'target_id') 

    class Meta: 
     abstract = True 

は、今では動作します。

関連する問題