I can upload images from django admin panel but cannot to do same thing with django form , it saves any text but did not save images only, anyone help me please
this is my code:
models.py:
class Posts(models.Model):
Ahal = 'Ahal'
Balkan = 'Balkan'
Dasoguz = 'Dasoguz'
Lebap = 'Lebap'
Mary = 'Mary'
CHOOSE_REGION = {
(Ahal,'Ahal'),
(Balkan,'Balkan'),
(Dasoguz,'Dasoguz'),
(Lebap,'Lebap'),
(Mary,'Mary')
}
name = models.CharField(max_length=30, blank=False, verbose_name='Ady')
image = models.ImageField(blank=True, null=True, verbose_name='surat')
text = models.TextField(verbose_name='gosmaça maglumat')
price = models.FloatField(verbose_name='bahasy')
region = models.CharField(max_length=30, choices=CHOOSE_REGION, blank=False, verbose_name='welaýat')
district = models.CharField(max_length=30, blank=False, verbose_name='etrab')
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='eýesi')
phone = models.CharField(max_length=50, blank=False, verbose_name='telefon belgisi')
published = models.DateTimeField(auto_now=True, verbose_name='satuwa çykan guni')
forms.py:
class PostForm(forms.ModelForm):
class Meta:
model = Posts
fields = ['name','image','text','price','region','district','user','phone']
views.py:
def add_post(request):
form = PostForm(request.POST or None)
if form.is_valid():
form.save()
template = 'add_post.html'
context = {'form':form}
return render(request,template,context)
settings.py:
STATIC_URL = '/static/'
STATICFILES_DIR = [Path(BASE_DIR,'static')]
MEDIA_URL = '/media/'
MEDIA_ROOT = Path(BASE_DIR,'media')
urls.py:
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('posts.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
html form tag:
{% extends 'index.html' %}
{% load static %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{form.media}}
{{form.as_p}}
<input type="submit" value="Save" name="">
</form>
{% endblock %}