Форма модели не отображается в шаблоне django
Мой models.py и это моя модель для фотографий.
# home photo page
class Photos(models.Model):
photo_title = models.CharField(max_length=50, blank=False)
photo_description = models.CharField(max_length=50, blank=False)
photo_date = models.DateField(blank=False)
photo_location = models.CharField(max_length=50, blank=False)
photo_file = models.FileField(upload_to='photos', blank=False)
def __str__(self):
return self.photo_title
Мой forms.py это модель формы, которую я сделал, чтобы отобразить ее как форму.
class UploadPhotosForm(forms.Form):
class Meta:
model = Photos
fields = '__all__'
my views.py это мои релевантные импорты и секции, которые я закодировал в файле представления.
from .forms import CampForm, ProjectForm, HikeForm, UploadPostsForm, UploadPhotosForm
posts = UploadPostsForm()
photo = UploadPhotosForm()
print(photo.as_p())
Здесь этот код должен вывести форму в виде текста в консоль, не так ли?
Но у меня нет никакого консольного вывода. Похоже, что переменная photo
ничего не инициализировала, не так ли?
Я понятия не имею, что произошло.
context = {
'title': 'manage_wall',
'posts': posts,
'photo': photo,
}
return render(request, 'manager/manage_wall.html', context)
Мой шаблон
{% block content %}
<div class="container">
<div class="row">
<div class="col">
<form action="" method="post">
{% csrf_token %}
{{photo.as_p}}
<input type="submit" value="Add">
</form>
</div>
<div class="col">
<form action="" method="post">
{% csrf_token %}
{{posts.as_p}}
<input type="submit" value=" Add">
</form>
</div>
</div>
</div>
{%endblock %}
Как вы можете видеть здесь мой photoForm
не отображается во фронтенде, может ли кто-нибудь указать на ошибку, которую я сделал, не отображая только эту форму, в то время как другие формы успешно отображаются во фронтенде. Мой вопрос в том, что все остальные формы модели успешно отображаются, почему эта не отображается должным образом.
Я нашел ответ в models.py там должно быть forms.ModelForm
class UploadPhotosForm(forms.ModelForm):
class Meta:
model = Photos
fields = '__all__'
это не рендеринг, если это не ModelForm
Ваш UploadPhotosForm
наследуется от forms.Form(...)
.
класс, который не содержит model
в Meta
классе, поэтому вместо наследования от forms.Form
класса наследуется от form.ModelForm(...)
вот финальная версия вашего кода
class UploadPhotosForm(forms.ModelForm):
class Meta:
model = Photos
fields = '__all__'