我希望为一个具有
当我运行
GenericForeignKey
关系的模型(Comment
)创建数据迁移。我的模型是根据contenttypes的Django文档制作的。django documentation
模型:
...
class NiceMeme(models.Model):
"""
Example model.
"""
name = models.CharField(max_length=140)
image = models.ImageField(upload_to=get_path_to_store_nice_meme_images)
class Comment(models.Model):
"""
Model to add comments to any other (non abstract) model.
"""
...
user = models.ForeignKey(ExtendedUser)
content = models.CharField(max_length=140)
content_type = models.ForeignKey(ContentType)
object_pk = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_pk')
数据迁移:
...
def create_comment(apps, schema_editor):
...
nice_meme = NiceMeme.objects.create(name='Nice nice meme')
Comment.objects.create(
user=user,
content='Gott ist tot',
poster_username='Friedrich',
content_object=nice_meme
)
...
operations = [
migrations.RunPython(create_comment)
]
当我运行
./manage.py migrate
时,出现以下错误:TypeError: 'content_object' is an invalid keyword argument for this function
。需要说明的是,我已经在视图中使用了与create_comment
相同的代码,并且运行良好。我的django版本为1.7.7,我没有使用south。
编辑:我尝试了Shang Wang的答案。Comment.objects.create(
user=user,
content='Gott ist tot',
poster_username='Friedrich',
content_type=ContentType.objects.get_for_model(nice_meme),
object_pk=nice_meme.id
)
也没有起作用:
ValueError: Cannot assign "<ContentType: nice meme>": "Comment.content_type" must be a "ContentType" instance.