(sorry for duplicate I have already posted on stackoverflow.com >
http://goo.gl/I7Jj6 )
I need to perform a datamigration of a model Answer in app Question.
In that script there is a dependency such that I need to create an
instance of a model Chapter which is in the app Journal. So, I coded
it as follows:
def forwards(self, orm):
for answer_object in orm.Answer.objects.all():
#This Works.
blog, is_created =
orm['blog.Post'].objects.get_or_create(title=answer_object.answer[:
100])
blog.save()
#This DOES NOT work
chapter, is_created =
orm['journal.Chapter'].objects.get_or_create(content_object=blog)
chapter.save()
#cleanup task, not relevant to this question below
answer_object.chapter_ptr = chapter
answer_object.save()
But as expected this throws an error on "
orm['journal.Chapter'].objects.get_or_create(content_object=blog)"
saying that > django.core.exceptions.FieldError: Cannot resolve
keyword 'content_object' into field.
This is presumably due to content_object being a GenericForeignKey so
some operations are not allowed. But I also tried other alternatives
for creating the "chapter" object like,
chapter = orm['journal.Chapter'](content_object=blog)
ERROR > TypeError: 'content_object' is an invalid keyword argument for
this function
and
chapter = orm.journal.Chapter(content_object=blog)
ERROR > AttributeError: The model 'journal' from the app 'questions'
is not available in this migration. (Did you use orm.ModelName, not
orm['app.ModelName']?)
So since my earlier approach was failing I tried a new tact. The model
whose instantiation was failing in my code above i.e. Chapter in the
Journal app, I decided to create a datamigration for that instead. I
also made sure to --freeze the models I am referring to in the
forwards definition. Now this should have been straight forward, I
would think. I have my forward code as follows -
def forwards(self, orm):
for answer_object in orm['questions.Answer'].objects.all():
#Works, AGAIN!
blog, is_created =
orm['blog.Post'].objects.get_or_create(title=answer_object.answer[:
100])
blog.save()
# DOES NOT WORK, AGAIN!
chapter = orm.Chapter(rank=1, content_object=blog)
chapter.save()
I would have thought that now since I am creating instance of a model
(Chapter) which exists in the subject app (Journal) everything should
have worked out. But i am getting the same error > TypeError:
'content_object' is an invalid keyword argument for this function.
It fails at the same point, namely, "content_object". I will post
below the model definition if that might help.
class Chapter(models.Model):
rank = models.IntegerField()
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey()
Also all the models being touched in these forwards methods, namely -
blog, chapter, questions; are fully defined in the 00n_*.py files
created by South's schemamigration.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.