【发布时间】:2013-11-15 10:56:53
【问题描述】:
当我检查 Trac 数据库时,我得到:
class TicketChange(models.Model):
ticket = models.IntegerField()
time = models.BigIntegerField()
author = models.TextField(blank=True)
field = models.TextField()
oldvalue = models.TextField(blank=True)
newvalue = models.TextField(blank=True)
class Meta:
managed = False
db_table = 'ticket_change'
没有主键:
>>> TicketChange.objects.all()
DatabaseError: column ticket_change.id does not exist
LINE 1: SELECT "ticket_change"."id", "ticket_change"."ticket", "tick...
因为我需要指定一个pk但是Trac中ticket_change的原始主键是:
Primary key (ticket, time, field)
但这在 Django 中是不可能的:Django Multi-Column Primary Key Discussion。
如果我像 pk 一样定义 time,我不能同时添加两个票证更改。
我能做什么?
【问题讨论】:
-
我已经实现了对虚拟复合键的基本支持。不需要修改数据库。在这里检查我的答案 - stackoverflow.com/a/65404017/46548
标签: python django primary-key composite-primary-key