Django_quill modelform QuillField не отображается в форме
Я не могу заставить QuillField
отображаться в моей форме. Все остальные поля отображаются нормально. Я не могу найти, чего мне не хватает.
Я просмотрел django_quill_editor официальные документы и порылся в google. Я в растерянности.
Вот файлы.
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.sites',
'crispy_forms',
'blog',
'django_quill',
forms.py
from .models import UserPost
class UserPostForm(forms.ModelForm):
class Meta:
model = UserPost
fields = ('title', 'image', 'content')
models.py
from django_quill.fields import QuillField
class UserPost(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=500)
image = models.ImageField(upload_to='images/', blank=True, null=True)
categories = models.ManyToManyField('Category', related_name='userposts')
content = QuillField()
date_published = models.DateField(auto_now_add=True)
url = models.SlugField(max_length=500, unique=True, blank=True, editable=False)
def save(self, *args, **kwargs):
self.url = slugify(self.title)
super(UserPost, self).save(*args, **kwargs)
views.py
from .forms import UserPostForm
def userposts_create_view(request):
form = UserPostForm(request.POST or None)
if request.method == "POST":
if form.is_valid():
form.save()
return redirect("landingpage:home")
context= {'form': form,}
return render(request, 'userpost_create.html', context)
userpost_create.html
{% load crispy_forms_tags %}
<div class="card">
<div class="card-title">
<h1>Create Post</h1>
</div>
<div class="card-body">
<form enctype="multipart/form-data" method="POST" action="">
{% csrf_token %}
<div class="form-row">
<div class="form-group col-md-6 mb-0">
{{ form.title|as_crispy_field }}
</div>
<div class="form-group col-md-6 mb-0">
{{ form.image|as_crispy_field }}
</div>
</div>
{{ form.content }}
<input type="submit" value="Post"/>
</form>
</div>
Чтобы отобразить `django-quill-editor' как поле ModelForm, необходимо выполнить несколько дополнительных шагов, как указано в Django Quill Docs.
В вашем forms.py
:
from django_quill.forms import QuillFormField # <-- NEW
class PostForm(ModelForm):
class Meta:
model = Post
body = QuillFormField() # <-- NEW
fields = ['body']
В верхней части вашего шаблона в разделе <head>
:
<head>
{{ form.media }}
</head>
или
<head>
{% include 'django_quill/media.html' %}
</head>