我有这个模型(其目的是保存数据):
class UserPhraseDatum(models.Model):
result_from = models.ForeignKey(Results, related_name="data")
phrase = models.ForeignKey(Sound)
score = models.DecimalField(max_digits=5, decimal_places=4)
snr = models.PositiveSmallIntegerField()
m_energy_1 = models.PositiveSmallIntegerField()
m_energy_2 = models.PositiveSmallIntegerField()
m_energy_3 = models.PositiveSmallIntegerField()
m_energy_4 = models.PositiveSmallIntegerField()
m_energy_5 = models.PositiveSmallIntegerField()
m_energy_6 = models.PositiveSmallIntegerField()
m_energy_7 = models.PositiveSmallIntegerField()
u_energy_1 = models.PositiveSmallIntegerField()
u_energy_2 = models.PositiveSmallIntegerField()
u_energy_3 = models.PositiveSmallIntegerField()
u_energy_4 = models.PositiveSmallIntegerField()
u_energy_5 = models.PositiveSmallIntegerField()
u_energy_6 = models.PositiveSmallIntegerField()
u_energy_7 = models.PositiveSmallIntegerField()
最终,这些实例中的信息将在R
中进行分析,并可能吐出为CSV。 总是为m_energy
的6个条目和u_energy
的6个条目。是否有更好的方法来分配这些?
答案 0 :(得分:0)
如果你正在使用postgreSQL,你应该参考ArrayField
here。
您的用例将是,而不是:
u_energy_* = models.PositiveSmallIntegerField()
你可以这样做:
u_energies = ArrayField(size=6, models.PositiveSmallIntegerField())
如果您真的无法迁移到postgres,那么我建议您在执行事务时使用TextField
并解析数据。这可以在扩展models.TextField
的类中处理,但这种方式肯定更加特殊,容易出错。
答案 1 :(得分:0)
您还可以使用反向ForeignKey
关系。您需要创建其他模型:
class m_energy(models.Model):
content_field = '''some content'''
UserPhraseDatum = models.ForeignKey('UserPhraseDatum', related_name = 'm_energies')
和u_energy
是一样的。
在您的查询中,您可以通过以下方式m_energy
:
var = UserPhraseDatum.objects.filter(m_energies__content_field )