重要提示:此問題已不再適用。無法在遷移中使用GenericForeignKey創建模型的實例
在Django 1.7遷移我嘗試以編程方式創建註釋條目下面的代碼:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
def create_genericcomment_from_bookingcomment(apps, schema_editor):
BookingComment = apps.get_model('booking', 'BookingComment')
Comment = apps.get_model('django_comments', 'Comment')
for comment in BookingComment.objects.all():
new = Comment(content_object=comment.booking)
new.save()
dependencies = [
('comments', '0001_initial'),
('django_comments', '__first__'),
]
operations = [
migrations.RunPython(create_genericcomment_from_bookingcomment),
]
而且會產生錯誤: TypeError: 'content_object' is an invalid keyword argument for this function
然而,同樣的代碼(即Comment(content_object=comment.booking)
)在shell中執行時工作。
我試圖創建一個空白模型new = Comment()
,然後手動設置所有必要的字段,但即使我設置content_type
和object_pk
領域。因此,他們content_type
實際上並沒有保存,我收到django.db.utils.IntegrityError: null value in column "content_type_id" violates not-null constraint
任何想法如何在遷移中正確創建一個具有通用外鍵的模型?或者任何解決方法?
你可以粘貼模式?至少有關位? 我遇到了相同的情況,試圖創建一個簡單的模型,這是M2M領域的目標。模型本身沒有關係領域。 – tutuca