Django модель не распознает поле MarkdownxFormField - PullRequest
2 голосов
/ 21 января 2020

Я пытаюсь добавить поддержку markdownx для моей модели, которая позволит редактировать предварительный просмотр из панели администратора. Однако, как только я изменил свое поле content с models.FileField на MarkdownXFromField() django, он просто удаляет поле содержимого при переносе и игнорирует его, как если бы оно вообще не было частью модели.

Я точно следовал этим документам , но он не работает.

Я также бегал collectstatic.

# models.py

from os.path import splitext
from uuid import uuid4
from django.db import models
from markdownx.fields import MarkdownxFormField

def hashImageFilename(instance, name):
    ext = splitext(name)[1]
    return "images/{}{}".format(uuid4(), ext)


class Article(models.Model):
    title = models.CharField(("title"), max_length=100)
    content = MarkdownxFormField()
    description = models.TextField(("description"), default='')
    uploadDate = models.DateTimeField(("uploadDate"), auto_now=True)
    lastModified = models.DateTimeField(("uploadDate"), auto_now=True)
    publicationDate = models.DateField("publicationDate")
    image = models.ImageField("image", upload_to=hashImageFilename)

    def __str__(self):
        return self.title
# urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf.urls import url
from django.conf import settings
from markdownx import urls as markdownx

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api-auth/', include('rest_framework.urls')),
    path('api/articles/', include('articles.api.urls')),
    url(r'^markdownx/', include('markdownx.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
# admin.py

from django.contrib import admin

# Register your models here.
from markdownx.admin import MarkdownxModelAdmin
from .models import Article

admin.site.register(Article, MarkdownxModelAdmin)
# settings.py

INSTALLED_APPS = [
  #...
  'markdownx'
]

1 Ответ

1 голос
/ 21 января 2020

Вы путаете поле Markdownx<b>Form</b>Field формы с полем модели MarkdownxField. Вам следует переписать модель следующим образом:

# models.py

from os.path import splitext
from uuid import uuid4
from django.db import models
from markdownx<b>.models</b> import <b>MarkdownxField</b>

def hashImageFilename(instance, name):
    ext = splitext(name)[1]
    return "images/{}{}".format(uuid4(), ext)


class Article(models.Model):
    title = models.CharField(("title"), max_length=100)
    content = <b>MarkdownxFormField()</b>
    description = models.TextField(("description"), default='')
    uploadDate = models.DateTimeField(("uploadDate"), auto_now=True)
    lastModified = models.DateTimeField(("uploadDate"), auto_now=True)
    publicationDate = models.DateField("publicationDate")
    image = models.ImageField("image", upload_to=hashImageFilename)

    def __str__(self):
        return self.title

MarkdownxFormField используется для форм , поэтому она будет отображаться с указанным c виджетом и т. Д. c. Для хранения контента в базе данных вам понадобится модель поле .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...