Django模型,保存多个值的最佳方法?

Django模型,保存多个值的最佳方法?,django,django-models,Django,Django Models,我需要为同一外键保存多个值。让我举个例子: class SaveMoz(models.Model): keyword = models.ForeignKey(KW) m1 = ? m2 = ? m3 = ? m4 = ? 这些字段中的每一个都应该表示经过分析的URL(通过MozAPI),我想存储多个值。以下是我要保存的输出: [{u'pda': 53.2342343456775, u'upa': 23.45324234235234},

我需要为同一外键保存多个值。让我举个例子:

class SaveMoz(models.Model):

    keyword = models.ForeignKey(KW)    
    m1 = ?    
    m2 = ?
    m3 = ? 
    m4 = ?
这些字段中的每一个都应该表示经过分析的URL(通过MozAPI),我想存储多个值。以下是我要保存的输出:

[{u'pda': 53.2342343456775, u'upa': 23.45324234235234}, # These 2 would need to go to #m1
 {u'pda': 58.26193857945012, u'upa': 36.56733779379807}, # These 2 into #m2
 {u'pda': 66.15243480785065, u'upa': 35.377615927279244}, #m3
 {u'pda': 42.8651222137307, u'upa': 20.487826402597264}, #m4
]
我只为每个字段提供了2个值(pda、upa),作为示例,我将使用5个值(不是同时输入所有值)

储存这些东西的最好方法是什么?多值字段?是否将其保存为json?
稍后我需要调用这些值来执行不同的计算

使m成为表示数据的独立模型/类

class GoodNameForM(models.Model):
    moz = models.ForeignKey(SaveMoz)
    pda = DecimalField()
    upa = DecimalField()
请务必给出能很好地代表这些字段的字段名

您可以在
SaveMoz
上通过

save_moz_instance.goodnameform_set.all()

使m成为表示数据的单独模型/类

class GoodNameForM(models.Model):
    moz = models.ForeignKey(SaveMoz)
    pda = DecimalField()
    upa = DecimalField()
请务必给出能很好地代表这些字段的字段名

您可以在
SaveMoz
上通过

save_moz_instance.goodnameform_set.all()
使用,可以为关系添加额外的上下文

class UrlData(models.Model):
    pda = models.FloatField()
    upa = models.FloatField()

class SaveMozData(models.Model):
    savemoz = models.ForeignKey('SaveMoz')
    kw = models.ForeignKey(KW)
    data = models.ManyToManyField(UrlData)

class SaveMoz(models.Model):
    keyword = models.ManyToManyField(KW,
                        through='SaveMozData',
                        through_fields=('savemoz','kw'))
使用,可以为关系添加额外的上下文

class UrlData(models.Model):
    pda = models.FloatField()
    upa = models.FloatField()

class SaveMozData(models.Model):
    savemoz = models.ForeignKey('SaveMoz')
    kw = models.ForeignKey(KW)
    data = models.ManyToManyField(UrlData)

class SaveMoz(models.Model):
    keyword = models.ManyToManyField(KW,
                        through='SaveMozData',
                        through_fields=('savemoz','kw'))

那么1:N或N:M方法呢?两种建议的解决方案都意味着为不同的值创建新的类,对吗?因为每5组值将有10个字段,这意味着50个新字段:)或者我理解错了吗?1:N或N:M方法如何?两种建议的解决方案都意味着为不同的值创建新类,对吗?由于每5组值将有10个字段,这意味着50个新字段:)或者我理解错了吗?谢谢,但这会导致错误:SaveMozData savemoz=models.ForeignKey(savemoz)中的第85行文件“/home/django/django_project/keywords/models.py”NameError:名称“SaveMoz”未定义因为SaveMoz是在SaveMozData之后定义的,只需引用名称(请参见更新的编辑)。就像一个符咒:)但现在它返回:\uuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu()获得了一个意外的关键字参数“through\u fields”,如果我更改keyword=models.ForeignKey到manyfield,错误就会消失。这是正确的解决方案?Cheeseys,抱歉,应该有很多字段,但这会在SaveMozData savemoz=models.ForeignKey(savemoz)name错误:名称“savemoz”未定义因为savemoz是在SaveMozData之后定义的,只需引用名称(请参阅更新的编辑)。像一个符咒一样工作:)但现在它返回:\uuuu init\uuuuuu()得到了一个意外的关键字参数“through\u fields”。如果我将keyword=models.ForeignKey更改为ManyToManyField,我可以消除错误,这是正确的解决方案吗?干杯,对不起,应该是曼尼菲尔德