2016-01-30 25 views
5

Ho un Django 1.8 applicazione di cui migrazione iniziale si basa su django-interval-field come questo:Rimozione di una migrazione Django che dipende campo personalizzato da un vecchio modulo di

import interval.fields 

migrations.CreateModel(
    name='Item', 
    fields=[ 
     ... 
     ('estimated_time', interval.fields.IntervalField(null=True, blank=True)), 

allora ho migrato questo campo per utilizzare incorporato di Django in DurationField e non sto più utilizzando questo modulo, ma ho bisogno di tenerlo in requirements.txt per poter eseguire le mie migrazioni.

Tuttavia, questo modulo genera errori durante il tentativo di aggiornamento a Django 1.9. Inoltre, non posso mantenere questo modulo per sempre. Sarebbe bello liberarsene.

Ho provato a schiacciare le migrazioni, ma la migrazione compressa contiene ancora l'istruzione import interval.fields e crea il campo intervallo. Tutto lo schiacciamento è concatenare tutto in un unico file.

Qualcuno può dirmi come andare avanti verso la rimozione di questo modulo?

L'app Django in questione è here.

risposta

4

Così, il vostro schiacciamento non è vero schiacciare

  1. rimuovere questo pacchetto da requirements.txt
  2. Rimuovere import interval.fields dal models.py
  3. Modifica la tua interval.fields.IntervalField(xxx) a qualche tipo disponibile in Django nelle relative my_app_label/migrations/1234_some_migrations.py
  4. Fatto
1

In tutti i file di migrazione trovare tutte le dichiarazioni di interval.fields.IntervalField (per il campo modello in questione) e sostituire con IntegerField.

Finché non si dispone della migrazione dei dati che utilizzano il campo Intervallo durante il processo di migrazione, si dovrebbe andare bene.