Tiene varias opciones para solucionar el problema. Me concentraré en el acercamiento poke-the-code, ya que ha pasado un tiempo desde que me volví loco con django internal.
He incluido el código correspondiente a continuación del enlace. Tenga en cuenta que he eliminado las partes irrelevantes. También tenga en cuenta que la parte que va a editar SU CASO AQUÍ necesita un refactor.
Sigue el siguiente algoritmo hasta que estés satisfecho.
- Refactorizar las declaraciones
if
dependiendo de los campos en (una o más) funciones separadas.
- Agregue el código de inspección hasta que descubra qué campos corresponden a las relaciones genéricas.
- Agregue código de extracción hasta que se sigan las relaciones genéricas.
Prueba.
def handle_models(self, models, **options):
# SNIP handle options
all = objects
if propagate:
collected = set([(x.__class__, x.pk) for x in all])
while objects:
related = []
for x in objects:
if DEBUG:
print "Adding %s[%s]" % (model_name(x), x.pk)
# follow forward relation fields
for f in x.__class__._meta.fields + x.__class__._meta.many_to_many:
# YOU CASE HERE
if isinstance(f, ForeignKey):
new = getattr(x, f.name) # instantiate object
if new and not (new.__class__, new.pk) in collected:
collected.add((new.__class__, new.pk))
related.append(new)
if isinstance(f, ManyToManyField):
for new in getattr(x, f.name).all():
if new and not (new.__class__, new.pk) in collected:
collected.add((new.__class__, new.pk))
related.append(new)
# SNIP
objects = related
all.extend(objects)
# SNIP serialization
favor editar pregunta para incluir la fuente pertinente. No voy a hacer el esfuerzo de hacer clic en otro sitio solo para ver de qué estás hablando, y es más difícil para alguien que tiene el mismo problema que tú descubrir esta pregunta de esta manera. –
Debe agregar algunos detalles sobre su problema, ¿cuál es exactamente el problema que tiene? –