Django thực hiện di chuyển cho mỗi bảng mới được thêm vào ứng dụng của bạn bất kể đó là mô hình được quản lý hay không. Tuy nhiên, có một sự khác biệt rất quan trọng và tinh tế khi bạn sử dụng managed=False
cài đặt. Di chuyển kết quả là một mục nhập giả. Nó không thực thi bất kỳ SQL nào.
Để xác nhận điều này, hãy thêm một mô hình mới không được quản lý
class Dummy(models.Model):
something = models.IntegerField()
class Meta:
managed = False
bây giờ khi bạn thực hiện makemigrations
theo sau là sqlimigrate *myapp* *migration_number*
bạn sẽ thấy rằng nó không tạo ra bất kỳ sql nào.
Mặt khác, nếu bạn thấy rằng Django đang cố gắng tạo một bảng cho bạn, điều đó thường có nghĩa là bạn đã có cùng một mô hình tồn tại trước đó nhưng tại thời điểm mô hình đó được quản lý. Để xác nhận điều này, hãy tìm kiếm migrations
của bạn thư mục cho VirtualTotal
đó là tên của mô hình được đề cập.