Как исправить «Проект с идентификатором», некоторый идентификатор «не существует» Ошибка модели Django FileField - PullRequest
0 голосов
/ 10 октября 2019

У меня есть модель, которую я могу редактировать со страницы администратора. Я хочу загрузить файл, затем загрузить файл обратно.

В моделях:

class Project(models.Model):
    project_title = models.CharField(max_length=200)
    project_content = models.TextField()
    project_published = models.DateTimeField("date published", default=datetime.now())
    project_file = models.FileField(default="Null",upload_to='Files')
    def __str__(self):
        return self.project_title

В админке:

class ProjectAdmin(admin.ModelAdmin):
    #fields = ["project_title",
    #          "project_published",
    #          "project_content", 
    #          "project_funded",]

    fieldsets = [
        ("Title/date", {"fields": ["project_title", "project_published"]}),
        ("URL", {"fields":["project_slug"]})

        ("Content", {"fields":["project_content", "project_file"]}),

    ]

FileField генерирует 2 подполя: кнопка загрузки и поле «текущий» со ссылкойв текущий файл, если таковой существует.

enter image description here

Загрузка файла работает нормально, файл сохраняется в каталоге «Файлы», но когда я нажимаю на ссылку, я перенаправляюсь на домашнюю страницу иполучить "Проект с идентификатором" 1 / change / Files / somefilename "не существует. Возможно, он был удален?"ошибка.

Я попытался добавить к администратору:

def file_link(self, Project):
        if Project.project_file:
            return "<a href='%s' download>Download</a>" % (Project.project_file.url,)
        else:
            return "No attachment"
    file_link.allow_tags = True
    file_link.short_description = 'File Download'

, но он просто печатает href в виде обычного текста, содержащего URL "Files / somefilename".

enter image description here

Последние запросы, обработанные сервером:

[10 / Oct / 2019 15:57:15] "GET / admin / main / project / 1 /изменение / Files / 61765395_604632376708720_5004719923088326656_n_1_zAanPtO.jpg HTTP / 1.1" 301 0 [10 / октябрь / 2019 15:57:15] "GET /admin/main/project/1/change/Files/61765395_604632376708720_5004719923088326656_n_1_zAanPtO.jpg/ HTTP / 1.1" 302 0[10 / Oct / 2019 15:57:15] "GET /admin/main/project/1/change/Files/61765395_604632376708720_5004719923088326656_n_1_zAanPtO.jpg/change/ HTTP / 1.1" 302 0 [10 / Oct / 2019 15:57:15] "GET / admin / HTTP / 1.1" 200 7848

1 Ответ

0 голосов
/ 10 октября 2019

Возможно, вам нужно исправить MEDIA_URL следующим образом:

MEDIA_URL = '/media/'

и добавить URL-адрес мультимедиа в urls.py, чтобы django обслуживал вашмультимедийные файлы (in development server):

from django.conf import settings
from django.conf.urls.static import static


urlpatterns = patterns('',
    # ... the rest of your URLconf goes here ...
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...