[pyar] South se confunde cuando le cambio el nombre a una property?

Federico Heinz fheinz en vialibre.org.ar
Jue Sep 9 01:39:34 ART 2010


Le metí South a un proyecto que estoy haciendo, y venía bárbaro.

Resulta que me encontré con que tenía que agregarle comportamiento a
la asignación a un campo ForeignKey. "No problemo", me dije,
¡properties al rescate! La clase original era

class Foo(models.Model):
    bar = models.ForeignKey('Bar')

lo que con la danza de las properties queda así

class Foo(models.Model):
    _bar = models.ForeignKey('Bar', db_column="bar_id")

    @property
    def bar(self):
        return self._bar

    @bar.setter
    def bar(self, value):
        self._bar = value
        self.hacer_algo_mas()

Todo anda perfecto... salvo por South. Pese a que los cambios sólo
afectan el lado Python de la cosa, y la base de datos no cambió
nada, South insiste en borrar la columna foo.bar_id de la base,
para inmediatamente agregarla de nuevo (obviamente, perdiendo el
contenido original en el proceso).

¿Hay forma de decirle a South "no te vuelvas loco, este cambio no
modifica la base de datos"?

Se me ocurre que podría decirle que genere la migración, editarla a
mano para que no haga macanas (básicamente, cambiar el contenido de
Migration.forwards y Migration.backwards por 'pass'), y de esa manera
convencer a South de que hizo el trabajo, pero ¿es ese el
procedimiento recomendado por 9 de cada 8 odontólogos que
programan en Django?

	Fede



More information about the pyar mailing list