def __number():
# This line returns the number of the latest created object
# as a "Factura" object in format "n/year"
last = Factura.objects.filter(f_type__exact=False).latest('number')
# We convert it into a string and split it to get only the first number
spl = str(last).split('/')[0]
# Convert it into integer so we can do math
n = int(spl)
# Get the current year
y = date.today().strftime('%y')
# If none return 1/year
if n == None:
return str(1) + '/' + str(y)
# Else we increment the number in one.
else:
n = n + 1
return str(n) + '/' + str(y)
설명 : '1/year' '2/year'등의 형식으로 번호를 자동 생성합니다. 사용자가 다른 번호를 입력하면 p.e. 함수는 그 다음에 나오고 다음은 565/10이됩니다.이 비단뱀 기능을 향상시키는 방법은 없습니까?
사용자가 p. 34/10 (564/10 입력 후)이 함수는 가장 큰 숫자를 따릅니다.
나는 이것을 제대로 할 수 있습니까? 더 좋은 방법이 있습니까?
업데이트 :
def __number():
current_year = date.today().strftime('%y')
try:
facturas_emmited = Factura.objects.filter(f_type__exact=False)
latest_object = facturas_emmited.latest('number').__str__()
first_number = int(latest_object.split("/")[0]) + 1
except Factura.DoesNotExist:
first_number = 1
return '%s/%s' % (first_number, current_year)
..... PERL! –
@ 그렉 나는 나 자신을 죽이는 게 좋을거야 ... hehe. Perl은 나에게 너무 앞서있다. 아마도 미래에 나는 그것을 배우려고 노력할 것이다. –
벌어지는'except' 블록을 사용하지 말고, 걱정되는 특정 오류를 잡으십시오. – Daenyth