2016-05-17 4 views
2

Djangoの2つのモデルで定義されていますが、2番目のモデルは最初のモデルに基づいており、SQLのバックエンドサーバービュー(ないテーブルの上に)Djangoでは、2番目(ビューベース)モデルのFKのためモデルインスタンスを削除できません

class Embedder(models.Model): 
    {my_fields...} 

class MostRecent(models.Model): 
    embedder = models.ForeignKey(Embedder) 
    status = models.IntegerField() 

    class Meta: 
    db_table = 'embedder_most_recent' 
    managed = False 

問題は、私はこのエラーのためエンベッダのインスタンスを削除することができないということです。

View or function 'embedder_most_recent' is not updatable because the modification affects multiple base tables. (4405) (SQLExecDirectW)") 

問題は、私ができるので、ジャンゴに常駐しているようですエラーなしでSQLの埋め込み行を削除してください。どうすれば問題を解決できますか?

+0

ありがとう:

次の例では、ForeignKeyを含むオブジェクトを削除します。 – Patrick

答えて

1

marcusshepすでに投稿されていますが、Djangoのドキュメントにこの動作に関する十分なドキュメントがあります。

ジャンゴForeignKeyは別のDjangoのモデルオブジェクトを参照するので、親オブジェクトを削除しようとすると、DjangoはForeignKeyを参照するオブジェクトを管理する方法を見つけなければならないことを意味します。この動作を明示的に指定する必要があります。あなたの助けの人たちのための

class MostRecent(models.Model): 
    embedder = models.ForeignKey(Embedder, on_delete=models.CASCADE) 
    status = models.IntegerField() 
関連する問題