0
내 청소 방법의 한계 그래서 청소 방법에 나는 = 활성 True입니다 각 임대에 대해 하나 개의 조합을 제한청소 방법은 내 모델에서
를 하나의 활성 기록을 가지고 트리거 = 거짓
is_terminated하지class LeaseTerm(CommonInfo):
version = IntegerVersionField()
start_period = models.ForeignKey(Period, related_name='start_period')
end_period = models.ForeignKey(Period, related_name='end_period')
lease = models.ForeignKey(Lease)
increase = models.DecimalField(max_digits=7, decimal_places=2)
amount = models.DecimalField(max_digits=7, decimal_places=2)
is_terminated = models.BooleanField(default=False)
def clean(self):
model = self.__class__
if self.lease_id and (self.is_terminated == False) and model.objects.filter(lease=self.lease, is_active=True).exclude(id=self.id).count() > 0:
raise ValidationError('!Lease has a active Term , terminate existing term prior to creation of a new one'.format(self.lease))
그리고 이것은 새로운 용어를 만들이다
def term_new(request,pk,uri):
lease = get_object_or_404(Lease, pk=pk)
title = 'term'
uri = _get_redirect_url(request, uri)
if request.method == "POST":
form = LeaseTermForm(request.POST)
form.lease = lease
if form.is_valid():
term = form.save(commit=False)
#term.lease = lease
term.save()
messages.add_message(request, messages.SUCCESS, str(term.id) + "-SUCCESS Object created sucssefully")
return redirect(uri)
else:
form = LeaseTermForm()
return render(request, 'object_edit.html', {'form': form, 'title': title, 'extend': EXTEND})
형태
class LeaseTermForm(forms.ModelForm):
class Meta:
model = LeaseTerm
fields = [ 'amount',
'start_period','end_period', 'increase','is_terminated' ]
그러나 clean 메소드가 더 이상 트리거되지 않으면 사용자가 is_active = true 및 is_terminated = false를 사용하여 동일한리스에서 새 레코딩을 만들지 못하게됩니다. 이유가 무엇일까요?
저장 방법을 재정의 할 때 호출해야한다고 생각합니다. http://stackoverflow.com/questions/18803112/django-doesnt-call-model-clean-method 여기에서'full_clean'을 호출하십시오. – Lucas03
예, 좋은 생각 감사합니다. 하지만 지금은 500 오류 페이지에서 점점 오류가 발생했습니다. –