【发布时间】:2020-08-29 13:08:19
【问题描述】:
我做了一个这样的模型:
from django.db import models
import json
# Create your models here.
class Data(models.Model):
node_id = models.ForeignKey("Node", on_delete=models.CASCADE)
timestamp = models.DateTimeField()
vibration = models.IntegerField()
moisture = models.IntegerField()
gps_latitude = models.CharField(max_length=250)
gps_longitude = models.CharField(max_length=250)
gyro_x = models.FloatField()
gyro_y = models.FloatField()
gyro_z = models.FloatField()
accelero_x = models.FloatField()
accelero_y = models.FloatField()
accelero_z = models.FloatField()
displacement = models.IntegerField()
class Node(models.Model):
node_id = models.IntegerField()
latitude = models.CharField(max_length=250)
longitude = models.CharField(max_length=250)
lokasi = models.CharField(max_length=500)
数据模型的端点位于http://127.0.0.1:8000/api/data/ 节点模型的端点位于http://127.0.0.1:8000/api/node/ 我希望 Node 类中的 node_id 成为主键,而 Data 类中的 node_id 成为外键。 我尝试像这样发帖到http://127.0.0.1:8000/api/node/:
{
"node_id": 1,
"latitude": "123",
"longitude": "123",
"lokasi": "eer"
}
然后我在http://127.0.0.1:8000/api/data/ 打开数据模型的端点以发布一些数据。 在 Node id 字段上,它应该是指 node_id=1,但为什么它只是指 node object(8),它是从 Django rest 框架自动生成的 id?
它使帖子数据看起来像这样:
{
"id": 13,
"timestamp": "2020-04-14T20:00:00+07:00",
"vibration": 1,
"moisture": 1,
"gps_latitude": "123",
"gps_longitude": "123",
"gyro_x": 1.0,
"gyro_y": 1.0,
"gyro_z": 1.0,
"accelero_x": 1.0,
"accelero_y": 1.0,
"accelero_z": 1.0,
"displacement": 1,
"node_id": 8}
“node_id”:应该是 1 而不是 8。 我的模型有问题吗?
【问题讨论】:
-
如果我理解正确,您正在使用自定义主键将其重命名为
node_id而不是id? -
是的,我不使用 id 作为主键。 id是系统自己生成的,我不对id做任何事情
标签: python django django-rest-framework