I don't see "File upload" button in document section of my front-end part and it's coming as a drop down list but it is visible in the admin panel, I'm new to Django, can you please help me to point out what is the mistake I'm making? [Thank You in advance :)].
[1]: Front-End Image: https://i.stack.imgur.com/MWU0s.png
[2]: Back-End Image: https://i.stack.imgur.com/p8zqR.jpg
forms.py File:
from django import forms
from .models import Task
class TaskDetails(forms.ModelForm):
class Meta:
model = Task
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['CPAsClient'].queryset = CPA_Client.objects.none()
if 'CPAsList' in self.data:
try:
CPA_id = int(self.data.get('CPAsList'))
self.fields['CPAsClient'].queryset = CPA_Client.objects.filter(CPA_id=CPA_id).order_by('name')
except (ValueError, TypeError):
pass
elif self.instance.pk:
self.fields['CPAsClient'].queryset = self.instance.CPAsList.CPAs_Clients_set.order_by('name')
task_form.html:
{% extends "crm/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<style>
div {
padding-right: 30px;
padding-left: 60px;
}
</style>
<div class="content-section">
<form action="" enctype="multipart/form-data" method="POST">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom-mb-4"> <h3 align="center">New Task</h3> </legend>
{{ form|crispy }}
</fieldset>
<div class="form-group" align="center">
<button class="btn; border:black" type="submit", value="POST"><strong> Add Task </strong></button>
</div>
</form>
</div>
{% endblock content %}
views.py
from django.shortcuts import render, redirect, get_object_or_404
from django.http import JsonResponse
from .models import Task
from django.views.generic import ListView, DetailView, CreateView
from .models import Task, CPAsList, CPA_Client, TaskType, Document
from .forms import TaskDetails
# Create your views here.
def home(request):
context = {
'tasks': Task.objects.all()
}
return render(request, 'crm/home.html', context)
class TaskListView(ListView):
model = Task
template_name = 'crm/home.html'
context_object_name = 'tasks'
ordering = ['-Date_Added']
class TaskDetailView(DetailView):
model = Task
class TaskCreateView(CreateView):
model = Task
fields = '__all__'
success_url = '/'
def model_form_upload(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('crm-home')
else:
form = DocumentForm()
return render(request, 'crm-home', {'form': form})
def contact(request):
return render(request, 'crm/contact.html')
def upload(request):
return render(request, 'crm/upload.html')
task_details.html
{% extends "crm/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<h1 align="center"> Task Details </h2>
<style>
div {
padding-right: 30px;
padding-left: 65px;
}
</style>
<article class="media content-section">
<div class="media-body">
<div class="task-metadata">
<h3 classs="task-title"> {{ object.Subject_Line }} </h3>
<p> {{ object.Task_Type }} </p>
<p> {{ object.CPA }} </p>
<p> {{ object.Client_of_CPA }} </p>
<p> {{ object.Priority }} </p>
<p> {{ object.Date_Added }} </p>
{% if object.Document %}
<p> <a href="{{ MEDIA_URL }}{{ task.Document.file }}" target="_blank">{{ object.Document }} </a> </p>
{% else %}
<p>No documents</p>
{% endif %}
<p> {{ object.Additional_Note }} </p>
<p> {{ object.Task_Time }} </p>
<p> {{ object.Author }} </p>
</div>
</div>
</article>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
{% endblock content %}
urls.py
from django.urls import path
from . import views
from django.conf import settings
from django.conf.urls.static import static
from .views import TaskListView, TaskDetailView, TaskCreateView
urlpatterns = [
path('', TaskListView.as_view(), name='crm-home'),
path('contact/', views.contact, name='crm-contact'),
path('task/<int:pk>/', TaskDetailView.as_view(), name='task-detail'),
path('task/new/', TaskCreateView.as_view(), name='task-create'),
path('upload/', views.upload, name='upload'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)