Форма не действительна. ID: выберите правильный выбор. Этот выбор не является одним из доступных вариантов

Когда я запускаю этот код, даже все данные верны.demobilized_formset.is_valid() дает мне False а также demobilized_formset.errors дает {u'id': [u'Select a valid choice. That choice is not one of the available choices.']}

Я не знаю, почему возникает ошибка id как {u'id': [u'Select a valid choice. That choice is not one of the available choices.']}

managers.py

class DemobilizedEmployee(models.Manager):
    use_for_related_fields = True
    def get_queryset(self):
        # When I use filter instead of exclude it works fine.
        return super(DemobilizedEmployee, self).get_queryset().exclude(
            demobilized_date=None)

models.py

class PurchasedEmployees(AuditDeleteSafeModel):
    purchase = models.ForeignKey(Purchase)
    employee = models.ForeignKey(Employee)
    category = models.CharField(max_length=32)
    mobilized_date = models.DateField()
    demobilized_date = models.DateField(null=True, blank=True)
    period_worked = models.PositiveSmallIntegerField(null=True, blank=True)

    mobilized_emp = MobilizedEmployee()
    demobilized_emp= DemobilizedEmployee()
    objects =  # Is also an custom Manager which changes deleted=True in Abstract Model
    class Meta:
        db_table = 'purchased_employees'

forms.py

class DetailMobilizeForm(forms.ModelForm):
    class Meta:
        model = PurchasedEmployees
        fields = ('employee', 'category', 'mobilized_date',
                  'demobilized_date', 'period_worked')
DetailMobilizeInlineFormSet = modelformset_factory(
    PurchasedEmployees, can_delete=False, extra=0, form=DetailMobilizeForm)

views.py

def update_demobilize_emp(request, id=None):
    purchase = get_object_or_404(Purchase, id=id) if id else Purchase()
    demobilized_queryset = PurchasedEmployees.demobilized_emp.filter(
        purchase=purchase)

    if request.POST:
        demobilized_formset = DetailMobilizeInlineFormSet(
            data=request.POST,
            prefix='demobilized_form')

        if demobilized_formset.is_valid():
            demobilized_formset.save()
            status_code, res = 200, {'status': 'true'}
        else:
            for form in demobilized_formset:
                import ipdb; ipdb.set_trace()
            errors = {}
            errors[demobilized_formset.prefix + '_errors'] =\
                demobilized_formset.errors
            status_code, res = 202, {'error': errors , 'status': 'false'}

        return HttpResponse(
            json.dumps(res), content_type='application/json',
            status=status_code)

    else:
        demobilized_formset = DetailMobilizeInlineFormSet(
            queryset=demobilized_queryset,
            prefix='demobilized_form')

    return render_to_response(
        'purchase/update_demobilized_employees.html', {
        'demobilized_formset': demobilized_formset, 'purchase': purchase},
        context_instance=RequestContext(request))

шаблон

<div class="field">
    {{ demobilized_formset.management_form }}
    <div class="box">
      {% for forms in demobilized_formset.forms %}
      <div class="box_item">
          {{ forms }}
          <br class="clear">
      </div>
      {% endfor %}
  </div>

А также

...

<label for="id_demobilized_form-0-period_worked">Period worked:</label>
<input id="id_demobilized_form-0-period_worked" type="number" value="100" name="demobilized_form-0-period_worked" min="0">
<input id="id_demobilized_form-0-id" type="hidden" value="8" name="demobilized_form-0-id">
<ul class="errorlist">
    <li>Select a valid choice. That choice is not one of the available choices.</li>
</ul>

0 ответов

Другие вопросы по тегам