Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

django-ckeditor: uncaught exception using inlines

I have two simple models Question and Choice (one question has multiple choices). I have used inline formset to add Choices along with adding Questions (through modelAdmin functionality).

class Question(models.Model):
    category = models.CharField(max_length=50)
    question_text = RichTextField(max_length=2000, verbose_name="Question Text", blank=True)

class Choice(models.Model):
    question = models.ForeignKey(Question)
    description = RichTextField(max_length=500, verbose_name="Choice Description")
    is_correct = models.BooleanField(default=False)

Now the fields of Choice and Question are RichTextField defined in django-ckeditor. The issue is when I click on "Add another choice" I get an uncaught exception: [CKEDITOR.editor] The instance "id_choice_set-__prefix__-description" already exists, which disrupts the ckeditor functionality.

Any ideas/suggestions how to fix this issue? I think some JS tweaks can help but I have a very limited knowledge in JS/Jquery

Thanks

like image 432
Konstant Avatar asked Feb 28 '11 01:02

Konstant


2 Answers

I encountered similar issue and found a fix here.

It's caused by Inline usage,try install the forked version to have try.

Though 6 months pass,hope this help those who got similar issue.

like image 97
Michael Avatar answered Sep 30 '22 18:09

Michael


Line 66 of django-ckeditor's widgets.py is where your problems seems to originate.

Essentially it seems, the substitution made for final_attr['id'] is where you are getting the __prefix__ from. Looking through the framework source code, line 151 of Django's forms/formsets.py is where that value comes from. Also, from the source, it seems that value will be replaced by the default prefix i.e. 'form' in all cases except if you are using _get_empty_form() incorrectly somehow.

It would be helpful if you provide/answer the following:

  1. Once your page is rendered, but before you "Add another choice", post the tag attributes from your rendered formset (incl. the management form).

  2. Are you using _get_empty_form() directly at any point in your code?

  3. Code for the view where you create the formset and where you render it.

like image 39
Sumeet Singh Avatar answered Sep 30 '22 17:09

Sumeet Singh