我有一个遗留数据库,不是由django创建的,具有下表:
$ describe `time`;
+---------------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+-------------------+-----------------------------+
| data | varchar(16) | NO | MUL | NULL | |
| source | varchar(255) | NO | | NULL | |
| source_origin | varchar(128) | YES | | NULL | |
| sys_updated | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+---------------+--------------+------+-----+-------------------+-----------------------------+
我按inspectdb
获取此表的模型:
class Time(models.Model):
data = models.ForeignKey('a_table', models.DO_NOTHING)
source = models.CharField(max_length=255)
source_origin = models.CharField(max_length=128, blank=True, null=True)
sys_updated = models.DateTimeField()
class Meta:
managed = False
db_table = 'time'
unique_together = (('data', 'source_origin'),)
A有一个简单的序列化器:
class TimeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Time
fields = ('data', 'source', 'source_origin', 'sys_updated')
一个简单的view
:
class TimeList(generics.ListAPIView):
""" Retrieves all data. """
queryset = Time.objects.all()
serializer_class = TimeSerializer
当我尝试访问此内容时,让我们说localhost:8765/time/
,我收到以下错误:
OperationalError: (1054, "Unknown column 'time.id' in 'field list'")
我的问题: 有没有id的django休息桌是否可行? 我不想在我的桌子上添加身份证。
我在野外发现了一些answers,但没有帮助。
答案 0 :(得分:3)
来自doc:
每个模型只需要一个字段即可使primary_key = True(或者 明确声明或自动添加)。
https://docs.djangoproject.com/en/1.9/topics/db/models/#automatic-primary-key-fields
所以我担心答案是否定的。您可以尝试在其中一个字段上设置primary_key = True,如果这对您有用..