Django项目中利用DNA信息CSV作为数据库的有效途径

Django项目中利用DNA信息CSV作为数据库的有效途径,django,django-models,Django,Django Models,我正在考虑以下Django项目的设计。 在这个项目中,我有一个CSV文件(4列,500行),我不知道如何将其作为数据库处理。 数据包含500个代码,其中每个代码有3个分数:f1、f2、f3。 网站目标:1。获取用户对哪些要素列数据感兴趣以及数据的顺序的输入。 e、 g:2Xf21Xf1(只有3个要素列:f1、f2、f3和“代码”列) 2.生成代码输出,其中包含按要求顺序排列的所需功能的最高等级代码 因此,对于我们的输入:2Xf21Xf1 输出将是以下字符串:[#1排名代码f2列][#2排名代码f

我正在考虑以下Django项目的设计。 在这个项目中,我有一个CSV文件(4列,500行),我不知道如何将其作为数据库处理。 数据包含500个代码,其中每个代码有3个分数:f1、f2、f3。 网站目标:1。获取用户对哪些要素列数据感兴趣以及数据的顺序的输入。 e、 g:2Xf21Xf1(只有3个要素列:f1、f2、f3和“代码”列) 2.生成代码输出,其中包含按要求顺序排列的所需功能的最高等级代码

因此,对于我们的输入:2Xf21Xf1 输出将是以下字符串:
[#1排名代码f2列][#2排名代码f2列][#1排名代码f1列]

我正在考虑创建一个包含3列的数据库:f1、f2、f3,其中每列中都有降序的代码,因此如果用户想要f1中的5个代码,我将使用前5个

我的问题是: 如何以一种简单的方式处理数据库,以便正确使用Django工具来开发和维护它(而不是寻找效率)

我的第一个方向是使用MySql和django模型来映射数据。 我将非常感谢任何关于学习Django的想法或提示,因为我正在使用的官方文档提供了“pool”网站的示例,这不是我所需要的


谢谢

以下是我如何设计模型,因为我了解您的问题

class Field(models.Model):
    # This model represents each of the individual fX fields, so f1, f2, f3
    name = models.CharField(max_length=15, unique=True)


class Code(models.Model):
    # This model represents the values in the first column, code.
    name = models.CharField(max_length=255, unique=True)


class FieldData(models.Model):
    code = models.ForeignKey(Code, on_delete=models.CASCADE)
    field = models.ForeignKey(Field, on_delete=models.CASCADE)
    value = models.IntegerField()

    class Meta:
        unique_together = [('code', 'field')]
然后,当您处理CSV时,您会:

  • 阅读标题行并使用
    Field.objects。为代码后面的每一列获取或创建
  • 阅读正文,为行中的每个字段列创建
    code
    实例和
    FieldData
    实例

如果您需要FieldData实例的历史记录,则必须更改模型设计。

以下是我如何设计模型,因为我了解您的问题

class Field(models.Model):
    # This model represents each of the individual fX fields, so f1, f2, f3
    name = models.CharField(max_length=15, unique=True)


class Code(models.Model):
    # This model represents the values in the first column, code.
    name = models.CharField(max_length=255, unique=True)


class FieldData(models.Model):
    code = models.ForeignKey(Code, on_delete=models.CASCADE)
    field = models.ForeignKey(Field, on_delete=models.CASCADE)
    value = models.IntegerField()

    class Meta:
        unique_together = [('code', 'field')]
然后,当您处理CSV时,您会:

  • 阅读标题行并使用
    Field.objects。为代码后面的每一列获取或创建
  • 阅读正文,为行中的每个字段列创建
    code
    实例和
    FieldData
    实例
如果您需要FieldData实例的历史记录,则必须更改模型设计。

谢谢您的回答! 使用此模型可能是映射我的csv数据的好方法! 我有3个问题: 1) 实际解析CSV以逐行添加这些对象的简单方法是什么

2) 为什么以下模型不更简单(同时知道字段不会有任何变化):

3) 您将如何每次从每个字段提取排名最高的代码?e、 f1 G5最佳排名

谢谢您的回答! 使用此模型可能是映射我的csv数据的好方法! 我有3个问题: 1) 实际解析CSV以逐行添加这些对象的简单方法是什么

2) 为什么以下模型不更简单(同时知道字段不会有任何变化):

3) 您将如何每次从每个字段提取排名最高的代码?e、 f1最佳排名G5