我试图运行' syncdb -all'在我的django项目中,刚刚添加了这个模型。
但是我收到此错误消息:
django.db.utils.ProgrammingError: column "target_content_type_id" specified more than once
为什么会发生这种情况,因为' target_content_type_id'没有重复,也没有在任何其他模型中?
class Action(models.Model):
actor = models.ForeignKey(User)
verb = models.CharField(max_length=500)
action_object_content_type = models.ForeignKey(
ContentType, related_name='action_object', blank=True, null=True
)
action_object_object_id = models.CharField(
max_length=500, blank=True, null=True
)
action_object = generic.GenericForeignKey(
'action_object_content_type', 'action_object_object_id'
)
target_content_type = models.ForeignKey(
ContentType, related_name='target', blank=True, null=True
)
target_content_type_id = models.CharField(
max_length=500, blank=True, null=True
)
target = generic.GenericForeignKey(
'target_content_type', 'target_content_type_id'
)
public = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True)
答案 0 :(得分:2)
当您指定ForeignKey
字段时,Django会将"_id"
附加到字段名称以创建其数据库列名。
在这种情况下,您的target_content_type
字段ForeignKey
将对应于与您的字段冲突的数据库列target_content_type_id
。
将target_content_type_id
重命名为target_content_type_object_id
或其他类似内容。
以下是documentation of ForeignKey
及更多specifically on Database Representation