我想在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請你解釋一下嗎?看到我上面的更新,當我從模型窗體中刪除城市或重寫字段以顯示文本字段時,它工作正常 –
打開數據庫。檢查表格模式。檢查存儲在該字段中的字節序列。 –