我刚刚开始使用Django,并想知道处理以下数据的最佳方法。我有DataSet,它由许多我希望绘制的x,y坐标对组成。据我所知,Django在它的模型中不直接支持数值数组,那么处理这些数据的最佳方法是什么?现在我所能想到的就像下面的一样:
class DataSet(models.Model):
set_name = models.CharField(max_length=100)
class DataPoint(models.Model):
x = models.FloatField()
y = models.FloatField()
dataset = models.ForeignKey(DataSet)
这似乎有点奇怪,没有任何数据库或django的经验,我不知道如何继续。我现在正在使用postgresql,我认为它确实支持数组条目,但我不确定我是否准备在Django中创建自定义字段。
答案 0 :(得分:3)
如果没有自定义字段,您定义DataPoint
和DataSet
模型的想法似乎就成了现实。如果有可能在多个数据集中出现数据点,则应考虑将两者之间的关系更改为多对多字段。
将(通过测试)编写一个薄的业务层并将这两者结合起来也有助于最大限度地减少考虑模型在数据库中的存储方式的需要。
答案 1 :(得分:0)
您可以使用多对多模型关系。
来自Django文档:
from django.db import models
class Topping(models.Model):
# ...
pass
class Pizza(models.Model):
# ...
toppings = models.ManyToManyField(Topping)
更多信息: https://docs.djangoproject.com/en/2.1/topics/db/models/#many-to-many-relationships 例: https://docs.djangoproject.com/en/2.1/topics/db/examples/many_to_many/