我正在从Rails迁移到Django,并拥有一个现有数据库。我通过ag3 <- aggregate(z, as.yearmon, function(x) complex(real = sum(x), imag = length(x)))
rollapplyr(ag3, 3, function(x) sum(Re(x)) / sum(Im(x)), fill = NA)
## Jan 1970 Feb 1970 Mar 1970 Apr 1970 May 1970 Jun 1970 Jul 1970 Aug 1970
## NA NA 145.0 175.0 204.5 235.0 265.5 296.5
## Sep 1970 Oct 1970 Nov 1970 Dec 1970 Jan 1971
## 326.5 357.5 388.0 418.5 434.5
创建了models.py
,进行了更改,并测试了一些端点。一切似乎都很好。
然后我分别运行python manage.py inspectdb > models.py
和python manage.py makemigrations
来进行最初的django迁移。
我注意到旧的Rail的特定模型/表称为migrate
/ ArInternalMetadata
。我认为我可以通过简单地从ar_internal_metadata
中删除模型并重新运行models.py
来轻松删除表,但是当我这样做时,django只是说makemigrations
。运行No changes detected
也不会删除该表。
答案 0 :(得分:2)
弄清楚了。当inspectdb
从现有数据库创建模型时,默认情况下,它会将managed
内部类中的Meta
设置为False
。
class AssetCategories(FacadeModel):
created_at = models.DateTimeField()
updated_at = models.DateTimeField()
name = models.CharField(max_length=255)
deleted_at = models.DateTimeField(blank=True, null=True)
class Meta:
managed = False
db_table = 'asset_categories'
根据Django 2.1 Docs,这将防止删除操作发生
如果为False,则不会对此模型执行数据库表创建或删除操作
从managed = False
类中删除Meta
可使makemigrations
/ migrate
删除表。