2013-08-30 4 views
3

저는 회계 용 소프트웨어를 작곡하고 있습니다. 한 가지 기능은 지폐를 만드는 것입니다. 이 청구서에는 일련 번호가 있으며이 번호는 모든 청구서와 함께 증가해야합니다. 그러나 때로는이 시스템 외부에 하나를 만들어야 값을 변경할 수 있어야합니다. 그래서 내가 찾고있는 장고 관리자에서 정수 값 필드를 가질 수있는 방법은 항상 최대 값 +1이지만 편집 할 수 있습니다. 불행하게도 나는 어디에서 시작해야할지 모른다. 어떻게해야합니까? , 기본적으로Django에서 일반적으로 증가하는 필드의 기본값을 얻으려면 어떻게해야합니까?

class Bill(models.Model): 
    serial = models.IntegerField(default=lambda: Bill.objects.latest('id').serial + 1) 
    # ... 

의 최신 모델을 잡고, 기본 값으로 시리얼 (더하기 하나)를 사용 :

답변

4

당신은 기본적으로 함수 또는 람다 식을 사용하여 그것을 할 수 있습니다. 직렬이 정수인 경우이 작업이 가능합니다. 그렇지 않으면 자체 논리를 사용해야합니다. 또한 데이터베이스에 청구서가없는 경우 .latest()은 DoesNotExist를 발생시킵니다.

+0

완벽합니다. 나는 실제로 그것을 시도했지만 람다가 없었다. 나는 그것을 읽을 것이다. 고맙습니다! – JasonTS

1

언제든지 AutoField을 사용할 수 있습니다. 링크가 보여 주듯이 데이터베이스는 자동으로 증가하지만 데이터베이스는 명시 적으로 설정할 수 있습니다.

이라는 몇 줄 아래 부분을 참조하십시오. 자동 기본 키 값을 명시 적으로 지정하십시오.

+0

감사합니다. 하지만이 방법을 올바르게 사용하면 장고 관리자가 도움이되지 않습니까? 하지만 내 자신의 백엔드를 작성하는 경우에 대비하여 알아두면 좋습니다. – JasonTS

+0

솔직히 말해서 관리자에게 이것이 어떻게 나타나는지 잘 모르겠습니다. 이 방법의 장점은 데이터베이스 자체가 다음 ID 생성을 처리하고 개체를 만들 때마다 개체를 쿼리 할 필요가 없다는 것입니다. – Ben

+0

내가 볼 수있는 한, 그것은 admin에서 필드를 숨 깁니다! – JasonTS

관련 문제