我有以下 javascript 架构
const mongoose = require('mongoose');
const pointSchema = new mongoose.Schema({
timestamp: Number,
coords: {
latitude: Number,
longitude: Number,
altitude: Number,
accuracy: Number,
heading: Number,
speed: Number
}
});
const trackSchema = new mongoose.Schema({
userId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
name: {
type: String,
default: ''
},
locations: [pointSchema]
});
mongoose.model('Track', trackSchema);
我正在尝试将上述文件转换为 Django 模型。想知道如何在我的 models.py 中编写 locations: [pointSchema]
和 const pointSchema
。
可以转换吗?
这就是 express 服务器保存数据的方式。我想达到同样的目标
router.post('/tracks', async (req, res) => {
const { name, locations } = req.body;
if (!name || !locations) {
return res
.status(422)
.send({ error: 'You must provide a name and locations' });
}
try {
const track = new Track({ name, locations, userId: req.user._id });
await track.save();
res.send(track);
} catch (err) {
res.status(422).send({ error: err.message });
}
});
答案 0 :(得分:0)
您将在第一部分使用 Many-to-one relationship
描述为 ForeignKey
。以 docs 为基础,它看起来像这样:
from django.db import models
class Coords(models.Model):
latitude = models.FloatField(...)
longitude = models.FloatField(...)
...
class PointSchema(models.Model):
timestamp = models.DateTimeField(...)
coords = models.ForeignKey(Coords, on_delete=models.CASCADE)
对于 trackSchema
,我们使用 ManyToManyField。简短摘录:
class TrackSchema(models.Model):
...
locations = models.ManyToManyField(PointSchema)
...