当用户编辑其个人资料并提交表单时,此功能会获取用户提交的邮政编码,并找到最近的5个邮政编码并将其放入列表中。该部分已确认有效。我之后想要做的是将该列表保存到名为nearbyzips的模型字段(在相同的MyProfile模型中)。无论出于何种原因,邮政编码列表都不会保存到模型实例中。
print form.cleaned_data ['nearbyzips']给了我这个:
[u'97202', u'97206', u'97214', u'97215', u'97239']
我最终要做的是创建一个过滤器,当前登录的用户可以通过周围的zipcodes浏览待售商品。以下是对此的查询:
latest_entries = Entry.objects.filter(zipcode__in=user.nearbyzips)
我不确定为什么邮政编码列表没有保存到nearbyzips字段。我的第一个主要问题是,我是否可以将整数列表保存到IntegerField?当我提交表单,然后检查每个字段的值时,除了'nearbyzips'返回None之外,每个字段都会显示所有正确的值。这是我的问题是我使用了错误的字段。上面的查询是过滤值列表,然后返回一个步骤,是不是可以将值列表保存到单个模型字段?从阅读其他帖子我知道我可以先将列表序列化为JSON,然后将其保存到模型中,但我想知道我是否需要这样做。
编辑:
这是views.py中实际函数的更大片段:
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()
答案 0 :(得分:1)
简短回答是否,您无法将列表传递给整数字段。
根据您计算5个最近的邮政编码需要多长时间,可能更容易在您的模型上创建一个属性,使用您当前的方法计算并返回最近的5个代码。
class SomeClass(models.Model):
@property
def nearest_zips(self):
return CalculateNearestZip(self.zip)