我想在django模板中简单显示模型formset。我收到以下错误显示formset时Django UnicodeEncodeError:ascii编解码器不能编码字符
这里是我试图显示:实际表单集形式
中在view.py,在这里是相关的代码片段:
#
# create Address Model Form Set
#
AddressFormSet = modelformset_factory(Address, form=businessForms.AddressModelForm)
if request.method == 'GET':
businessModelForm = businessForms.BusinessModelForm(instance = business)
addressModelFormSet = AddressFormSet(queryset=Address.objects.filter(business__id=business.id))
#addressModelFormSet = AddressFormSet()
print addressModelFormSet.is_valid() /* prints False */
print addressModelFormSet.errors /* prints [] empty list */
return render(request, "business_profile.html", { 'businessModelForm' : businessModelForm,
'addressModelFormSet': addressModelFormSet })
我认为表单的有效性与这个错误无关,因为我们检查POST请求的有效性,但我可能是错的。尽管对于formset没有显示错误列表。
的AddressModelForm:
class AddressModelForm(ModelForm):
class Meta:
model = Address
fields = ['street_address', 'address_line2', 'city', 'state', 'zip_code']
模型定义:
class Country(models.Model):
country_name = models.CharField(max_length = 50)
country_code = models.CharField(max_length = 2)
phone_code = models.CharField(max_length = 3, default = '000')
country_name_ar = models.CharField(max_length = 50, default = '')
#many-to-many fields
currencies = models.ManyToManyField(Currency)
def __str__(self):
return "%s" % self.country_name
class City(models.Model):
city_name = models.CharField(max_length = 93)
city_name_ar = models.CharField(max_length = 93, default = '')
country = models.ForeignKey(Country)
def __str__(self):
return ("%s" % self.city_name) + "," + str(self.country)
class Address(models.Model):
street_address = models.CharField(max_length = 500)
address_line2 = models.CharField(max_length = 500, default = '')
city = models.ForeignKey(City) # country included implicitly in city
zip_code = models.CharField(max_length = 5, default = '')
state = models.CharField(max_length = 2, default = '')
def __str__(self):
usStr = ("%s" % self.street_address) + "," + str(self.city) + "," + self.state + "," + self.zip_code
nonUsStr = ("%s" % self.street_address) + "," + str(self.city)
if self.state != '':
return usStr
else:
return usStr
我怀疑那个城市模型city_name_ar这是城市名阿拉伯语领域的事实...
更新 如果我从AddressModelForm中删除“城市”,或将该字段覆盖为CharField,我不会不会得到这个错误,但是,我得到的城市ID是没用的文本字段...
我怀疑你的数据库没有正确地存储东西。 –
@ IgnacioVazquez-Abrams请你解释一下吗?看到我上面的更新,当我从模型窗体中删除城市或重写字段以显示文本字段时,它工作正常 –
打开数据库。检查表格模式。检查存储在该字段中的字节序列。 –