Заранее за вашу помощь. Внутри проекта mi у меня есть приложение, включающее модели, созданные из существующей базы данных. Поскольку эти таблицы администрируются администратором баз данных, они сохраняются как неуправляемые модели. Поскольку возможно, что нам требуется повторно генерировать модели из db из-за изменений в схеме, мы создали альтернативные прокси-модели для каждой из этих моделей, чтобы отделить часть, которой мы управляем, от того, чего у нас нет. Ниже вы можете увидеть пример, основанный на нашем текущем макете.Django 1.10 - команда makemigrations не обнаруживает изменения для неуправляемых моделей
В примере показана сгенерированная модель с FK на другую сгенерированную модель, соответственно прокси-модель имеет ссылку на не прокси-модель. Я прочитал дискуссию, указанную here, и попробовал некоторые из подходов, но ни один из них не работал для меня. Поэтому сейчас я пытаюсь обновить сгенерированную модель, указывая на прокси-сервер, который, как я думаю, не должен вызывать никаких проблем.
Как я уже видел, Django сгенерировал миграцию для неуправляемых моделей, я думал, что makemigration обнаружит изменение в FK для этой модели. Однако, когда я запускаю manage.py makemigrations
Это показывает, что никаких изменений не обнаружено. Является ли это ожидаемым поведением 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)