Hello I am new in Django. This is a multiple file upload with data models. This code is working but The data is not displaying on the template. Please find out how to show this multiple uploaded file on template and display those files in the form of table. I have tried so many times. Please give me a solution.
view.py:
def create_to_feed(request):
user = request.user
if request.method == 'POST':
machineform = MachineForm(request.POST)
form = FeedModelForm(request.POST)
file_form = FileModelForm(request.POST, request.FILES)
files = request.FILES.getlist('file') #field name in model
if form.is_valid() and file_form.is_valid():
feed_instance = form.save(commit=False)
feed_instance.user = user
feed_instance.save()
for f in files:
file_instance = FeedFile(file=f, feed=feed_instance)
file_instance.save()
return render(request,'usermaster/multipleupload.html',{'machineform':machineform,'form':form,'file_form':file_form,'user':user,'files':files})
else:
machineform = MachineForm()
form = FeedModelForm()
file_form = FileModelForm
machine = Machine.objects.all()
return render(request,'usermaster/multipleupload.html',{'machineform':machineform,'form':form,'file_form':file_form,'user':user,'machine':machine})
urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('multipleupload/', views.create_to_feed),
]+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)+static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
models.py:
class Machine(models.Model):
machine_name = models.CharField(max_length=200)
operation_no = models.IntegerField()
def __str__(self):
return self.machine_name
class Feed(models.Model):
user=models.ForeignKey(Machine, on_delete=models.CASCADE)
text=models.IntegerField()
class FeedFile(models.Model):
file = models.FileField(upload_to="documents/")
feed = models.ForeignKey(Feed, on_delete=models.CASCADE)
forms.py:
from django import forms
from usermaster.models import Feed, FeedFile, Machine
class MachineForm(forms.ModelForm):
class Meta:
model = Machine
fields = '__all__'
from django.forms import ClearableFileInput
...
class FeedModelForm(forms.ModelForm):
class Meta:
model = Feed
fields = ['text']
class FileModelForm(forms.ModelForm):
class Meta:
model = FeedFile
fields = ['file']
widgets = {
'file': ClearableFileInput(attrs={'multiple': True}),
}
admin.py:
from django.contrib import admin
from .models import Machine
from django.contrib import admin
from .models import Feed,FeedFile
#Register your models here:
admin.site.register(Machine)
class FeedFileInline(admin.TabularInline):
model = FeedFile
class FeedAdmin(admin.ModelAdmin):
inlines = [
FeedFileInline,
]
admin.site.register(Feed, FeedAdmin)
multipleupload.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form method="post" action="/multipleupload" enctype="multipart/form-data">
{% csrf_token %}
{{machineform}}
<button type="submit">Save</button>
</form>
</body>
</html>