将工作表转换为没有显式列名的Django对象

时间:2015-11-30 18:08:44

标签: django excel python-3.x django-models django-rest-framework

我已经逐行解析工作表数据的当前应用程序,并根据指定的一组列名称为每一行创建一个Django对象。

下一步是将应用程序扩展到没有在Django模型中明确指定的列名的情况下工作。数据(两个名称+值必须存储)可以作为显式属性存储,也可以存储在具有key->值映射的数据结构中。类方法将用于基于学习算法对数据进行分类。

如果事先不知道列名,怎么能做同样的事情?

models.py:

class Samplemodel(models.Model):
    Name = models.CharField(max_length=200, blank=True, null=True)
    Phone = models.CharField(max_length=200, blank=True, null=True)
    Email = models.CharField(max_length=200, blank=True, null=True)
    Other = models.CharField(max_length=200, blank=True, null=True)

    def __str__(self):
        return self.Name

serializers.py

class SamplemodelSerializer(serializers.ModelSerializer):
    class Meta:
        model = Samplemodel
        fields = ('Name', 'Phone', 'Email', 'Other')

models-generic.py:

class Genericmodel(models.Model):
    c1name = models.CharField(max_length=200, blank=True, null=True)
    c2name = models.CharField(max_length=200, blank=True, null=True)
    c3name = models.CharField(max_length=200, blank=True, null=True)
    c4name = models.CharField(max_length=200, blank=True, null=True)
    ...     

serializers-generic.py:

class GenericSerializer(serializers.ModelSerializer):
    class Meta:
        model = Samplemodel
        fields = ('c1name', 'c2name', 'c3name', 'c4name', ...)

1 个答案:

答案 0 :(得分:0)

我真的不明白为什么你需要2个型号?

将您的未知值输入分类器。一些如何获得4类概率(姓名,电话等)。使用最大概率标记未知值。对其他人重复此过程,然后保存原始模型。您可能需要一些规则来解决歧义。