【发布时间】: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 应用程序来完成此行为。