我请求您帮助我克服这个错误:
'NewAnnouncementForm' has no attribute 'error_messages'
因此,我有一个“公告”模型:
class Announcement(models.Model):
announcement = 'announcement'
alert = 'alert'
offer ='offer'
announcement_types = (
(announcement, 'Announcement'),
(alert, 'Alert'),
(offer, 'Offer'),
)
id = models.AutoField(auto_created=True, primary_key=True, serialize=True, verbose_name='ID')
text = models.CharField(max_length=1500, null=False, blank=False)
announcement_type = models.CharField(max_length=12, choices=announcement_types, default=announcement)
user_name = models.ForeignKey(CustomUserModel, db_column='user_name', on_delete=models.CASCADE)
date = models.DateTimeField(auto_now=True)
price = models.DecimalField(max_digits=6, decimal_places=2)
building_id = models.ForeignKey(Buildings, db_column='building_id', on_delete=models.CASCADE)
我正在尝试创建一个表单和视图,允许用户添加他的公告。这是我的表格:
class NewAnnouncementForm(forms.ModelForm):
text = forms.CharField(label='Treść ogłoszenia', max_length=1500)
announcement_type = forms.ChoiceField(label='Typ ogłoszenia', widget=forms.RadioSelect, choices=Announcement.announcement_types)
#user_name dodac do views przed savem i dodac w save (?)
price = forms.DecimalField(label='Podaj oczekiwaną cenę, w przypadku darmowego ogłoszenia wpisz 0')
user_name = forms.CharField(widget=forms.HiddenInput())
building_id = forms.IntegerField(widget=forms.HiddenInput())
class Meta(forms.Form):
model = Announcement
fields = ('text', 'announcement_type', 'price', 'user_name', 'building_id')
def save(self, commit=True):
announcement = super(NewAnnouncementForm, self).save(commit=False)
announcement.text = self.cleaned_data['text']
announcement.announcement_type = self.cleaned_data['announcement_type']
announcement.price = self.cleaned_data['price']
if commit:
announcement.save()
return announcement
还有views.py,我想这是一个主要问题:
def add_announcement(request):
if request.user.is_authenticated:
if request.method=='POST':
username = str(request.user.username)
user_object = CustomUserModel.objects.values_list('address', flat=True).get(username=username)
form = NewAnnouncementForm(request.POST)
form.fields['user_name'].initial = username
form.fields['building_id'].initial = user_object
if form.is_valid():
announcement = form.save()
messages.success(request, 'Dodano ogłoszenie')
return redirect("map_neigh:index")
else:
for msg in form.error_messages:
messages.error(request, str(msg) + ": " + str(form.error_messages[msg]))
return render(request = request,
template_name = "map_neigh/add.html",
context={"form":form})
form = NewAnnouncementForm
return render(request = request,
template_name = "map_neigh/add.html",
context={"form":form})
几个小时以来我一直面临的问题是,在尝试提交表单之后,我得到了错误:'NewAnnouncementForm' has no attribute 'error_messages'
相同的错误消息脚本对于注册和表单很有效,所以我认为它没有连接到导入
您不应该使用} attribute [Django-doc]指定错误:
.error_messages
。这是一个字典,用于显示特定字段的可能的错误消息。表单有一个^{相关问题 更多 >
编程相关推荐