Chr*_*las 3 mysql django django-rest-framework
我有一个不是由 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 |
+---------------+--------------+------+-----+-------------------+-----------------------------+
Run Code Online (Sandbox Code Playgroud)
我通过以下方式获得了这张表的模型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'),)
Run Code Online (Sandbox Code Playgroud)
A 有一个简单的序列化程序:
class TimeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Time
fields = ('data', 'source', 'source_origin', 'sys_updated')
Run Code Online (Sandbox Code Playgroud)
还有一个简单的view:
class TimeList(generics.ListAPIView):
""" Retrieves all data. """
queryset = Time.objects.all()
serializer_class = TimeSerializer
Run Code Online (Sandbox Code Playgroud)
当我尝试从以下位置访问它时,例如localhost:8765/time/,我收到以下错误:
OperationalError: (1054, "Unknown column 'time.id' in 'field list'")
Run Code Online (Sandbox Code Playgroud)
我的问题:是否可以在没有 id 的情况下为 django rest 提供一张桌子?我不想在我的桌子上添加一个 id。
我在野外找到了一些答案,但没有帮助。
从文档:
每个模型只需要一个字段来具有 primary_key=True (显式声明或自动添加)。
https://docs.djangoproject.com/en/1.9/topics/db/models/#automatic-primary-key-fields
所以恐怕答案是否定的。如果对您有用,您可以尝试在其他字段之一上设置 primary_key=True ..
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |