Как отобразить несколько загруженных файлов в шаблоне

Здравствуйте, я новичок в Django. Это загрузка нескольких файлов с моделями данных. Этот код работает, но данные не отображаются в шаблоне. Пожалуйста, подскажите, как показать несколько загруженных файлов на шаблоне и отобразить эти файлы в виде таблицы. Я пробовал так много раз. Пожалуйста, дайте мне решение.

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>

Вы можете использовать цикл for в HTML вашего шаблона. Например:

{% for file in file_form%}
    <a> {{ file.file}} </a>
     {% endfor %}

и вы можете прочитать это Как загрузить файл в Django?

Вернуться на верх