django inlineformset_工厂删除错误

django inlineformset_工厂删除错误,django,django-forms,django-templates,django-1.8,Django,Django Forms,Django Templates,Django 1.8,我的表格有一个奇怪的问题。 当我添加或更新现有模型时,所有模型都能正常工作,但当我选中模板中的单选按钮“删除并保存”时,我出现以下错误------>>>: TypeError位于/pro/edit/carted/ncavl189kabp97/hozegyc3f93ehb9ana/ “非类型”对象不可调用 申请方式:邮寄 请求URL: Django版本:1.8.3 异常类型:TypeError 异常值: “非类型”对象不可调用 异常位置:C:\Python34\lib\site packages

我的表格有一个奇怪的问题。 当我添加或更新现有模型时,所有模型都能正常工作,但当我选中模板中的单选按钮“删除并保存”时,我出现以下错误------>>>:
TypeError位于/pro/edit/carted/ncavl189kabp97/hozegyc3f93ehb9ana/

“非类型”对象不可调用

申请方式:邮寄 请求URL: Django版本:1.8.3 异常类型:TypeError 异常值:

“非类型”对象不可调用

异常位置:C:\Python34\lib\site packages\django\forms\models.py,保存现有对象,第754行 Python可执行文件:C:\Python34\Python.exe Python版本:3.4.3

这是我的观点。py

def edit_carted(request, place_code, det_seq):
    template_name = 'mealandscoreappmanager/edit_carted.html'
    args = {}
    args.update(csrf(request))
    get_mealplace = get_place_by_code(place_code)
    # On recupère le carted correspondant au detseq (equivalent id)
    carted_by_seq = get_cartdetail_by_seq(det_seq, get_mealplace)

    class RequiredFormSet(BaseInlineFormSet):
            def __init__(self, *args, **kwargs):
                super(RequiredFormSet, self).__init__(*args, **kwargs)
                for form in self.forms:
                    form.empty_permitted = False
    meal_extra_form_set = inlineformset_factory(
        CarteDetails,
        MealExtra,
        form=MealExtraForm,
        can_delete=True,
        extra=1, )

    if request.method == 'POST':
        form = CardDetailForm(
            request.POST, user=request.user, instance=carted_by_seq)
        extra_form_set = meal_extra_form_set(
            request.POST, request.FILES, instance=carted_by_seq)
        if form.is_valid() and extra_form_set.is_valid():
            form.save()
            extra_form_set.save()
            messages.success(request, DEFAULTMSG)
            return HttpResponseRedirect(
                reverse(
                    'manage-core:core-list-cartdetail',
                    args=(get_mealplace.code, ),
                    current_app=request.resolver_match.namespace,
                )
            )
    else:
        if get_mealplace.partner.account_user.has_perm(
            'mealandscoreappmanager.pro_account_manage_{0}'.format(
                request.user.profile.mealplace.code)
        ) is False:
            raise PermissionDenied

        # On genere le dictionnaire de données
        carted_data = get_initial_cartd_data(carted_by_seq)

        # On génère un formulaire simple correspondant au data dict
        form = CardDetailForm(
            initial=carted_data,
            user=request.user,
        )
        extra_form_set = meal_extra_form_set(instance=carted_by_seq)
        args['item_id'] = det_seq
    args['formset'] = extra_form_set
    args['form'] = form
    args['partner'] = get_mealplace
    return render_to_response(
        template_name,
        args,
        context_instance=RequestContext(request)
    )

这是我的formset.js代码

现在,当我编辑现有模型时,所有这些工作都完成了! 但当我选中delete({form.delete}})时,我得到一个错误:“NoneType”对象不可调用 我已经检查了我的错误页面并看到了这条消息<代码>

Z:\utilisateur\Documents\test\mealands\mealandscoreappmanager\views.py in edit_carted

        if request.method == 'POST':

            form = CardDetailForm(

                request.POST, user=request.user, instance=carted_by_seq)

            extra_form_set = meal_extra_form_set(

                request.POST, request.FILES, instance=carted_by_seq)

            if form.is_valid() and extra_form_set.is_valid():

                form.save()

                            extra_form_set.save()

     ...

                messages.success(request, DEFAULTMSG)

                return HttpResponseRedirect(

                    reverse(

                        'manage-core:core-list-cartdetail',

                        args=(get_mealplace.code, ),

                        current_app=request.resolver_match.namespace,

▶ Local vars
C:\Python34\lib\site-packages\django\forms\models.py in save

            if not commit:

                self.saved_forms = []

                def save_m2m():

                    for form in self.saved_forms:

                        form.save_m2m()

                self.save_m2m = save_m2m

                        return self.save_existing_objects(commit) + self.save_new_objects(commit)

     ...

        save.alters_data = True

        def clean(self):

            self.validate_unique()

▶ Local vars
C:\Python34\lib\site-packages\django\forms\models.py in save_existing_objects

                    # If the pk is None, it means that the object can't be

                    # deleted again. Possible reason for this is that the

                    # object was already deleted from the DB. Refs #14877.

                    if obj.pk is None:

                        continue

                    self.deleted_objects.append(obj)

                    if commit:

                                    obj.delete()

     ...

                elif form.has_changed():

                    self.changed_objects.append((obj, form.changed_data))

                    saved_instances.append(self.save_existing(form, obj, commit=commit))

                    if not commit:

                        self.saved_forms.append(form)

            return saved_instances

▶ Local vars
请告诉我需要帮助! 谢谢拉文

<div class="row">
        <div class="col-md-12">
            <form role="form form-horizontal" method="POST" action="" class="form-horizontal" enctype="multipart/form-data">
                {% csrf_token %}
                <div class="form-group">
                    <div class="col-md-12">
                        <div class="panel panel-primary">
                            <div class="panel-heading">{% trans "Définir menu" %}</div>
                            <div class="panel-body">
                                {% bootstrap_form form %}
                            </div>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-12">
                        <div class="mealands-mmeal-content">
                            <div class="mmeal-content-heading">{% trans "Accompagnement (ou supplements)" %} <span class="pull-right"><a href="#" id="add" class="btn btn-primary"><i class="fa fa-plus-circle"></i> {% trans "Ajouter supplément" %}</a></span></div>
                            <p class="help-block">
                            </p>
                            <div class="mmeal-content-body">
                                {{ formset.management_form }}
                                <div class="row">
                                    {% for forms in formset %}
                                        {{forms.id}}
                                        <div class="col-md-4 item">
                                            <div lass="form-group">
                                                <label class="control-label" for="{{forms.name.id_for_label}}">
                                                    {{forms.name.label}}
                                                    {% if forms.name.field.required %}
                                                        <span class="special_class">*</span>
                                                    {% endif %}
                                                </label>
                                                {{forms.name}}
                                                <div class="input-error-container">
                                                {{ forms.name.errors }}
                                              </div>
                                            </div>
                                            <div lass="form-group">
                                                <label class="control-label" for="{{forms.taxe.id_for_label}}">
                                                    {{forms.taxe.label}}
                                                    {% if forms.taxe.field.required %}
                                                        <span class="special_class">*</span>
                                                    {% endif %}
                                                </label>
                                                {{forms.taxe}}
                                                <div class="input-error-container">
                                                {{ forms.taxe.errors }}
                                              </div>
                                            </div>
                                            <div lass="form-group">
                                                <label class="control-label" for="{{forms.dispo.id_for_label}}">
                                                    {{forms.dispo}}
                                                    {% trans "Disponible ?" %}
                                                    {% if forms.dispo.field.required %}
                                                        <span class="special_class">*</span>
                                                    {% endif %}
                                                </label>
                                            </div>
                                            {% if formset.can_delete %}
                                    {{forms.id}}
                                            <div lass="form-group">
                                                <label class="control-label" for="{{forms.DELETE.id_for_label}}">
                                                    {{forms.DELETE}}
                                                    {{forms.DELETE.label}}
                                                    {% if forms.DELETE.field.required %}
                                                        <span class="special_class">*</span>
                                                    {% endif %}
                                                </label>
                                            </div>
                                            {% endif %}
                                            <a href="#" class="delete btn btn-danger"><i class="fa fa-times-circle"></i> {% trans "Supprimer supplément" %}</a>
                                        </div>
                                    {% endfor %}
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                {% buttons %}
                <button type="submit" class="btn btn-default" name="save_and_add_another">
                    <i class="fa fa-retweet"></i> {% trans "Enregistrer et ajouter nouveau" %}
                </button>
                <button type="submit" class="btn btn-primary" name="save">
                    <i class="fa fa-check-square-o"></i> {% trans "Enregistrer" %} 
                </button>
                {% if item_id %}
                    <a href="{% url "manage-core:core-delete-cartdetail" partner.code item_id %}" class="btn btn-danger"><i class="fa fa-times-circle"></i> {% trans "Supprimer" %}</a>
                {% endif %}
            {% endbuttons %}
            </form>
        </div>
</div>
class CarteDetails(models.Model):
    PERIOD_DAY = (
        (MORNING, _('Matin')),
        (NOON, _('Midi')),
        (AFTERNOON, _('Après midi')),
        (EVENING, _('Soir')),
    )
    **Note that sequence is my primary key**
    sequence = models.CharField(max_length=25, primary_key=True)
    jour = models.CharField(
        _('Jour'), max_length=1, choices=DAYSLIST)
    period = models.CharField(
        _('Période de la journée'),
        max_length=1, choices=PERIOD_DAY, default=MORNING)
    date_add = models.DateTimeField(auto_now_add=True)
    meal = models.ForeignKey(
        Meal, verbose_name=_('Plat'), null=True)
    # We add s because in view we'll use formset
    format = models.ForeignKey(Format, verbose_name=_('Format'), null=True)
    price = models.DecimalField(
        _('Prix'),
        max_digits=8,
        decimal_places=2,
        db_index=True,
        null=True,
    )
    dispo = models.BooleanField(default=True)
    existed = models.BooleanField(default=True)

    def __str__(self):
        return '%s - %s - %s' % (
            self.get_jour_display(),
            self.mealformat, self.get_period_display())

    class Meta:
        ordering = ['sequence']


class MealExtra(models.Model):
    name = models.CharField(max_length=30)
    taxe = models.DecimalField(
        _('Taxe'),
        max_digits=8,
        decimal_places=2,
        db_index=True,
    )
    carted = models.ForeignKey(CarteDetails, null=True)
    formule = models.ForeignKey(MealFormat, null=True)
    dispo = models.BooleanField(default=True)
    existed = models.BooleanField(default=True)
Z:\utilisateur\Documents\test\mealands\mealandscoreappmanager\views.py in edit_carted

        if request.method == 'POST':

            form = CardDetailForm(

                request.POST, user=request.user, instance=carted_by_seq)

            extra_form_set = meal_extra_form_set(

                request.POST, request.FILES, instance=carted_by_seq)

            if form.is_valid() and extra_form_set.is_valid():

                form.save()

                            extra_form_set.save()

     ...

                messages.success(request, DEFAULTMSG)

                return HttpResponseRedirect(

                    reverse(

                        'manage-core:core-list-cartdetail',

                        args=(get_mealplace.code, ),

                        current_app=request.resolver_match.namespace,

▶ Local vars
C:\Python34\lib\site-packages\django\forms\models.py in save

            if not commit:

                self.saved_forms = []

                def save_m2m():

                    for form in self.saved_forms:

                        form.save_m2m()

                self.save_m2m = save_m2m

                        return self.save_existing_objects(commit) + self.save_new_objects(commit)

     ...

        save.alters_data = True

        def clean(self):

            self.validate_unique()

▶ Local vars
C:\Python34\lib\site-packages\django\forms\models.py in save_existing_objects

                    # If the pk is None, it means that the object can't be

                    # deleted again. Possible reason for this is that the

                    # object was already deleted from the DB. Refs #14877.

                    if obj.pk is None:

                        continue

                    self.deleted_objects.append(obj)

                    if commit:

                                    obj.delete()

     ...

                elif form.has_changed():

                    self.changed_objects.append((obj, form.changed_data))

                    saved_instances.append(self.save_existing(form, obj, commit=commit))

                    if not commit:

                        self.saved_forms.append(form)

            return saved_instances

▶ Local vars