jazzband / django-smart-selects

chained and grouped selects for django forms
https://django-smart-selects.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
1.12k stars 352 forks source link

On page load "InitItem JSON.parse error in bindfeilds.js line 8" #249

Closed Basiczombie closed 4 years ago

Basiczombie commented 6 years ago

You MUST use this template when reporting issues. Please make sure you follow the checklist and fill in all of the information sections below.


All versions of django-smart-selects prior to version 1.2.8 are vulnerable to an XSS attack as detailed in issue 171. As a result, all previous versions have been removed from PyPI to prevent users from installing insecure versions. All users are urged to upgrade as soon as possible.

Checklist

Put an x in the bracket when you have completed each task, like this: [x]

Steps to reproduce

  1. Have installed smart-selects as per instructions
  2. When load issue appeared have manually loaded all js files as per issue #214
  3. When page loads get InitItem JSON.parse error in bindfeilds.js line 8 similar to issue #227

Models (have been reduced to just important fields)

class Vocation(Audit):
    CAT_CHOICES = (
        ('GENERAL', 'General'),
        ('ELEMENTARY', 'Elementary'),
        ('SECONDARY', 'Secondary'),
        ('PRESCHOOL', 'Preschool'),
        ('DISTRICT', 'District'),
    )

    name = models.CharField(max_length=255)
    category = models.CharField(max_length=255, choices=CAT_CHOICES)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "vocations"

class Area(Audit):
    name = models.CharField(max_length=255)
    vocations = models.ManyToManyField(Vocation)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "areas"

class Employee(Audit):

    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='employee')
    cell_phone = PhoneNumberField(blank=True, null=True)
    gender = models.CharField(max_length=10, choices=GENDER_CHOICES, blank=True, null=True)
    hired_by = models.CharField(max_length=10, choices=HIRED_CHOICES, blank=True, null=True)
    hire_type = models.CharField(max_length=20, choices=HIRE_TYPE_CHOICES, blank=True, null=True)
    buildings = models.ManyToManyField(Building)
    avatar = models.ImageField(upload_to=avatar_upload_path, blank=True, null=True)
    reviewed_date = models.DateTimeField(blank=True,null=True)

    #TODO get ChainedManytoManyField to work as expected
    position = models.ForeignKey(Vocation, blank=True, null=True)
    area = ChainedManyToManyField(
        Area,
        horizontal=True,
        verbose_name='areas',
        chained_field="position",
        chained_model_field="vocations")

    class Meta:
        verbose_name_plural = "employees"

    def __str__(self):
        return self.full_name

Forms

import datetime

from django import forms
from .models import Employee

class EmployeeForm(forms.ModelForm):

    class Meta:
        model = Employee
        fields =['gender', 'cell_phone','buildings', 'hired_by', 
                         'hire_type', 'position','area']

View

class EmployeeFormView(UpdateView):
    model = Employee
    template_name = 'ironcsd/employee_form.html'
    form_class = EmployeeForm
    success_url = reverse_lazy('profile-home')

    def get_object(self, queryset=None):
        obj, created = Employee.objects.get_or_create(
                    user=self.request.user.id,
                )
        return obj

    def form_valid(self, form):
        object = form.save(commit=False)

        object.reviewed_date = datetime.datetime.now()
        object.activity_user = self.request.user.username
        object.activity_date = datetime.datetime.now()
        object.save()

        return super(EmployeeFormView,self).form_valid(form)

Actual behavior

Expected behavior

blag commented 6 years ago

This is a more complicated use case for this project. I would recommend using django-autocomplete-light for this instead.

Can you copy and paste the Javascript errors from your console here? And any errors from the Django console?

blag commented 6 years ago

And if you can post the JSON from the AJAX request and responses that would also be extremely helpful. Thanks!

manelclos commented 4 years ago

No feedback, closing.