ご協力いただきありがとうございます。 miプロジェクトの中には、既存のデータベースから生成されたモデルを含むアプリケーションがあります。これらの表はDBAによって管理されるため、管理対象外のモデルとして保持されます。スキーマの変更によりdbからモデルを再生成する必要がある可能性があるため、管理している部分とそれ以外の部分を切り離すために、それぞれのモデルに対して代用プロキシモデルを作成しました。下に、現在のレイアウトに基づいた例があります。Django 1.10 - makemigrationsコマンドでアンマネージドモデルの変更が検出されない
この例では、生成された別のモデルとFKで生成されたモデルを示しているため、プロキシモデルには非プロキシモデルへの参照があります。私はhereと指摘された議論を読んだが、示されたアプローチのいくつかを試みたが、誰も私のために働いていなかった。だから私はプロキシを指すように生成されたモデルを更新しようとしていますが、これは問題を起こさないはずです。
Djangoがアンマネージドモデルのマイグレーションを生成したのを見てきましたが、マイグレーションはそのモデルのFKの変化を検出すると考えました。しかし、manage.py makemigrations
を実行すると、変更が検出されなかったことが示されます。 管理されていないモデルのマカマイグレーションの予想される動作ですか?
# app/models.py
class SacLocation(models.Model):
sacloc_location_id = models.IntegerField(primary_key=True)
sacloc_name = models.CharField(max_length=50, blank=True, null=True)
sacloc_state = models.IntegerField(blank=True, null=True)
# I'm changing this Field to point to the proxy model
# e.g. it will look like this, but the change is not detected by makemigrations
# sacloc_location_grouping = models.ForeignKey('LocationGroupingProxy',
# models.DO_NOTHING, db_column='sacloc_location_grouping')
sacloc_location_grouping = models.ForeignKey('SacLocationGrouping',
models.DO_NOTHING, db_column='sacloc_location_grouping')
class Meta:
managed = False
db_table = 'sac_location'
class SacLocationGrouping(models.Model):
saclgr_location_grouping__id = models.IntegerField(primary_key=True)
saclgr_name = models.CharField(max_length=50, blank=True, null=True)
class Meta:
managed = False
db_table = 'sac_location_grouping'
class LocationProxy(SacLocation):
class Meta:
proxy = True
def __str__(self):
return u'%s' % (self.sacloc_name)
class LocationGroupingProxy(SacLocationGrouping):
class Meta:
proxy = True
def __str__(self):
return u'%s' % (self.saclgr_name)