Извините, если это простое исправление, у меня 2 проблемы с моим набором inlineform:
При сохранении недопустимого объекта (не удовлетворяющего требованию уникальности вместе) выдается страница с ошибкой, а неотображение ошибок в форме.
В какой-то момент мои ошибки корректно отображались при сохранении недопустимого объекта, но при попытке сохранить действительный объект я получаю сообщение об ошибке, указывающее, что members.department был нулевым.Вот почему я поставил «например в экземплярах», но теперь я получаю эту новую проблему не отображать ошибки при сохранении недопустимого объекта.
У меня та же проблема при удалении действительногообъект.Объект удаляется, как и должно быть, но я все равно получаю страницу ошибки ...
Я потерян.
При сохранении недопустимых объектов я получаю:
The Membership could not be created because the data didn't validate.
При удалении действительных объектов я получаю:
[u'Select a valid choice. That choice is not one of the available choices.']
МОДЕЛЬ:
class Membership(models.Model):
project = models.ForeignKey(Project)
department = models.ForeignKey(Department)
employee = models.ForeignKey(Employee)
role = models.ManyToManyField(Role, blank=True, null=True)
class Meta:
unique_together = (("project", "employee",),)
VIEW.py
def employee_edit(request, employee_id):
i = get_object_or_404(Employee, pk=employee_id)
MembershipForm = make_membership_form(i)
MembershipFormSet = inlineformset_factory(Employee, Membership, exclude='department', extra=1, form=MembershipForm)
if request.method == "POST":
f = MembershipFormSet(request.POST, instance=i)
if f.is_valid():
instances = f.save(commit=False)
for instance in instances:
instance.department = i.department
instance.save()
f.save_m2m()
return render_to_response('dbtest/edit.html', {'item': i, 'formset': f, }, context_instance=RequestContext(request))
else:
f = MembershipFormSet(instance=i)
return render_to_response('dbtet/edit.html', {'item': i, 'formset': f, }, context_instance=RequestContext(request))
def make_membership_form(i):
class MembershipForm(forms.ModelForm):
project = forms.ModelChoiceField(queryset=Project.objects.filter(department=i.department))
class Meta:
model = Membership
exclude = ('department', 'employee')
unique_together = (("project", "employee",),)
return MembershipForm