Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:如何动态创建模型_Django_Csv_Django Models - Fatal编程技术网

Django:如何动态创建模型

Django:如何动态创建模型,django,csv,django-models,Django,Csv,Django Models,如何在上载csv文件时动态创建模型?我已经完成了它可以读取csv文件的部分。很好地解释了如何在django中运行时动态创建模型。它还链接到一个这样做的示例 但是,正如您在查看文档后所看到的,这样做非常复杂和麻烦。我不建议这样做,并且相信您很可能可以提前确定一个足够灵活的模型来处理CSV。这是一种更好的做法,因为在应用程序运行时动态更改数据库的模式会导致代码中出现大量错误。我知道您希望根据CSV中的字段动态创建新模式。虽然这是一个有效的用例,可能是绝对正确的调用。但我对此表示怀疑——它适合于一个t

如何在上载csv文件时动态创建模型?我已经完成了它可以读取csv文件的部分。

很好地解释了如何在django中运行时动态创建模型。它还链接到一个这样做的示例


但是,正如您在查看文档后所看到的,这样做非常复杂和麻烦。我不建议这样做,并且相信您很可能可以提前确定一个足够灵活的模型来处理CSV。这是一种更好的做法,因为在应用程序运行时动态更改数据库的模式会导致代码中出现大量错误。

我知道您希望根据CSV中的字段动态创建新模式。虽然这是一个有效的用例,可能是绝对正确的调用。但我对此表示怀疑——它适合于一个tenet SaaS应用程序的数据模型,可能会有愚蠢的性能和迁移问题

我会尝试使用Mongo/其他人提到的一些NoSQL解决方案。但更简单的方法可能是在SQL中实现一个修改的星型模式。在本例中,您将创建一个存储每个标题的维度表,然后创建每个数据元素的一个实例,该数据元素具有维度的外键并记录该维度的值

如果读取csv,psuedo代码将如下所示:

for row in DictReader(file):
   for k in row.keys():
       try:
          dim = Dimension.objects.get(name=k)
       except:
          dim = Dimension(name=k)
          dim.save()
       DimensionRecord(dimension=dim, value=row[k]

显然,如果维度已经存在,您可以更好地处理读取标题和错误捕获,但这将是一个示例,说明如何将可变标题的CSV动态加载到SQL db中。

为什么需要这些东西?请详细说明,信息很短,不知道确切的要求。我正在尝试创建一个web应用程序,不同类型的用户可以上传自己的csv文件进行异常检测。然后根据用户上传的csv文件塑造模型,然后使用NoSQL、MongoDB等,这将非常有用。