【问题标题】:Can I pass a list to a IntegerField?我可以将列表传递给 IntegerField 吗?
【发布时间】:2015-02-16 22:49:58
【问题描述】:

当用户编辑他们的个人资料并提交表单时,此函数会获取用户提交的邮政编码,并找到 5 个最接近的邮政编码并将它们放入列表中。这部分已确认可以正常工作。之后我想要做的是将该列表保存到名为 nearzips 的模型字段(在同一个 MyProfile 模型中)。无论出于何种原因,邮政编码列表都不会保存到模型实例中。

print form.cleaned_data['nearbyzips'] 给了我这个:

[u'97202', u'97206', u'97214', u'97215', u'97239']

我最终要做的是创建一个过滤器,当前登录的用户可以通过周围的邮政编码浏览待售商品。这是查询:

latest_entries = Entry.objects.filter(zipcode__in=user.nearbyzips)

我不确定为什么邮政编码列表没有保存到附近的zips 字段中。我的第一个也是主要问题是,我什至可以将整数列表保存到 IntegerField 中吗?当我提交表单,然后检查每个字段的值时,每个字段都会显示所有正确的值,但返回 None 的“nearbyzips”除外。是我的问题是我使用了错误的字段。上面的查询是过滤一个值的列表,那么后退一步,是不是不能将值的列表保存到单个模型字段中?通过阅读其他帖子,我知道我可以先将列表序列化为 JSON,然后将其保存到模型中,但我想知道这是否是我想做的事情所必需的。

编辑:

这是views.py中实际函数的更大sn-p:

if form.is_valid()
            cleanzipcode = form.cleaned_data['zipcode']

            nearestzips = PostalCode.objects.distance(PostalCode.objects.get(code=cleanzipcode).location)
            zip_codes = list(nearestzips.values_list('code', flat=True))
            form.cleaned_data['nearbyzips'] = zip_codes

            //print form.cleaned_data['nearbyzips']

            profile=form.save()

【问题讨论】:

  • 整数字段不是用来保存数据数组的。考虑使用外键关系,以便您可以查询:Entries.objects.filter(id=someId).zipcode_set.... 等。请参阅字段类型 docs。另一种选择是创建您自己的字段类型,使用通用外键,或使用特定于数据库的 django 应用程序来完成此行为。

标签: django django-queryset


【解决方案1】:

简短的回答是不,您不能将列表传递给整数字段。

根据您计算最近的 5 个邮政编码所需的时间,在您的模型上创建一个使用当前方法计算并返回最近的 5 个邮政编码的属性可能会更容易。

class SomeClass(models.Model):
@property
def nearest_zips(self):
    return CalculateNearestZip(self.zip)

【讨论】:

  • 我可以将整数列表传递给 Charfield 吗?
猜你喜欢
  • 2016-12-11
  • 1970-01-01
  • 1970-01-01
  • 2013-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多