Как вставить данные Rich Text Box, используя ModelForm в Django? - PullRequest
0 голосов
/ 12 февраля 2020

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

Моя модель настроена на прием формы.

class Vulnerability(models.Model):
title = models.CharField(max_length=200, null=True)
CVSS = models.DecimalField(max_digits=2, decimal_places=1, null=True)
summary = RichTextField(blank=True)
remediation = RichTextField(blank=True)
impact = RichTextField(blank=True)
References = RichTextField(blank=True)
CVE = models.CharField(max_length=30, null=True)
Software = models.CharField(max_length=100, null=True)
method = RichTextField(blank=True)
Tags = models.CharField(null=True, max_length=200)

У меня установлен файл forms.py чтобы в этом поле использовался правильный виджет (возможно, именно в этом проблема), я не совсем уверен, как настроить поле расширенного текста таким образом, и не могу найти его в документации.

class vulnform(ModelForm):
class Meta:
    model = Vulnerability
    fields = ['Tags', 'CVSS', 'CVE', 'Software', 'title','summary']
    widgets = {
        'title': TextInput(attrs={'class': 'form-control'}),
        'CVE': TextInput(attrs={'class': 'form-control'}),
        'Software': TextInput(attrs={'class': 'form-control'}),
        'Tags': TextInput(attrs={'class': 'form-control'}),
        'CVSS': NumberInput(attrs={'class': 'form-control','max':10,'min':0}),
        'summary' : RichTextWidget()

    }

мои взгляды. py выглядит следующим образом:

класс Dashboard (TemplateView): template_name = 'vuln_pages / Create_Vuln. html'

def get(self, request):
    Outform = {
                # 'Remediation': Remediation,
                 #'References': References,
                 #'Impact': impactform,
                 'vulnform': vulnform,

                 }
    return render(request, self.template_name, Outform)

при правильном отображении других полей в окне from. я рендерил их в своем шаблоне так:

                            <div class="col-lg-3">
                            <div class="form-group">
                                {{ vulnform.CVE }}
                            </div>
                        </div>

и пытаюсь отобразить форматированное текстовое поле примерно так:

                                {{ vulnform.summary }}

У меня они работали раньше, но когда данные находится в отдельном классе от всех других столбцов в formform.py, и я боялся, что при попытке сохранить их из запроса на публикацию они будут сохранены в разных строках базы данных.

Когда я поместите поле ввода в мой шаблон HTML, оно отображает текстовое поле в HTML, но, похоже, не загружает JS для поля расширенного текста.

<textarea name="summary" cols="40" rows="10" class="djrichtextfield" id="id_summary"></textarea>

Я пытался связать javascript со страницей вручную, но это не сработало.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

После переключения моего аддона на: django -ckeditor все работало нормально. похоже, проблема с аддоном.

0 голосов
/ 12 февраля 2020

Часто вам нужно что-то вроде {{ vulnform.media }} в верхней части шаблона формы. Вот где он вставляет необходимые CSS и JS для правильной визуализации форм. Я попытался посмотреть на конкретный репозиторий, но, как ни странно, это не объясняет этого.

Django В документах упоминается, как в форму добавляется носитель формы / виджета, а затем как его добавить в шаблон. .

...