Модуль ошибки атрибута 'django.db.models' не имеет атрибута RichTextUploadingField

Привет, я пытаюсь интегрировать ckeditor в свой блог, и вот ошибка, мне помогают когда я пытаюсь использовать импорт из ckeditor_uploader.fields RichTextUploadingField, RichTextField, ошибка не может импортировать RichTextField модели.py

from django.db import models
from django.template.defaultfilters import slugify
from django.conf import settings
from taggit.managers import TaggableManager
from ckeditor_uploader.fields import RichTextUploadingField

class Post(models.Model):
    STATUS_CHOICES=(
        ('Published','Published'),
        ('Draft','Draft'),
    )
    user = models.ForeignKey(settings.AUTH_USER_MODEL,default=1,on_delete=models.CASCADE)
    title = models.CharField(max_length=250)
    body = models.RichTextUploadingField()
    Category=models.ForeignKey(Category,on_delete=models.CASCADE)
    seo_title = models.CharField(max_length=60,blank=True,null=True)
    seo_description = models.CharField(max_length=125,blank=True,null=True)
    slug = models.SlugField(max_length=200,unique=True)
    status = models.CharField(max_length=10,default='Draft',choices=STATUS_CHOICES)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    thumb=models.ImageField(blank=True)
    tags = TaggableManager()

    def save(self,*args,**kwargs):
        self.slug=slugify(self.title)
        super(Post,self).save(*args,**kwargs)
    def __str__(self):
        return self.title

    def snippet(self):
        return self.body[:300]+'....'
    #def get_absolute_url(self):

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'pages',
    'blog',
    'django_social_share',
    'taggit',
    'ckeditor',
    'ckeditor_uploader',
]






STATIC_URL = '/static/'
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,'static'),
]
MEDIA_URL='/media/'
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
#PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
#STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static')


#...
SITE_ID = 1

####################################
    ##  CKEDITOR CONFIGURATION ##
####################################

CKEDITOR_JQUERY_URL = 'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js'

CKEDITOR_UPLOAD_PATH = 'uploads/'
CKEDITOR_IMAGE_BACKEND = "pillow"

CKEDITOR_CONFIGS = {
    'default': {
        'toolbar': None,
    },
}

также пытаюсь использовать импорт из ckeditor.fields import RichTextField говорит, что не может импортировать из RichTextField

Вот ошибка: body = models.RichTextUploadingField(). Измените это на body = RichTextUploadingField().

xyres 15.03.2019 12:04

спасибо сработало! пожалуйста, больше объяснений, и почему при попытке импортировать оба, например, из ckeditor_uploader.fields import RichTextField, RichTextUploadingField, выдает ошибку, не может импортировать RichTextField

cipher 15.03.2019 12:25
RichTextUploadingField находится в ckeditor_uploader.fields, тогда как RichTextField находится в ckeditor.fields. Они в отдельных файлах. Таким образом, вы должны импортировать их из разных мест. Вы не можете сделать это в одном операторе импорта.
xyres 15.03.2019 12:42
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
3 336
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы используете: models.RichTextUploadingField() который на самом деле не является классом модуля модели, вы импортируете его из другой библиотеки, поэтому вы должны использовать только body = RichTextUploadingField().

Могу ли я узнать причину дополнительных объяснений, пожалуйста

cipher 15.03.2019 12:20

Другие вопросы по теме