Я прошу Вас помочь мне преодолеть эту ошибку: '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'
Тот же сценарий с сообщениями об ошибках хорошо работает для регистрации и имеет форму, поэтому я не думаю, что он связан с импортом.