저는 장고 모델을 작성 중이며 데이터베이스에 존재할 수있는 레코드 수를 제한하려고합니다. 예를 들어 라디오를 가지고 있고 구성 가능한 6 개의 스테이션을 가질 수 있다고 가정 해 봅시다. 데이터베이스의 스테이션 수를 제한하는 가장 좋은 방법은 무엇입니까?모델의 레코드 수를 제한하십시오.
3
A
답변
4
save
method을 무시하고 각 라디오에 대해 6 개의 스테이션 만 있는지 확인하여 구현합니다. 일곱 번째 스테이션이 추가되면 적절한 오류 메시지와 함께 저장을 중단 할 수 있습니다.
+0
정확한지 알고 싶으면 추가 '선택'을해야 횟수가 정확한지 알아야합니다. – sergzach
0
이 경우 단일 인스턴스 (singletone 형)로 하나의 라디오 모델을 만들고 일대일 필드로 6 개의 스테이션을 만들 수 있습니다. 가능한 결정을 참조하십시오.
이점은 각 스테이션에 대한 임의 액세스을 가질 수 있다는 것입니다. 더 이상 검사가 없습니다.
class RadioHasNotStationError(Exception):
pass
class _Station(models.Model): # private model, so, you can't use the class anywhere else
# fields of station
class Radio(models.Model):
station1 = models.OneToOneField(_Station)
station2 = models.OneToOneField(_Station)
station3 = models.OneToOneField(_Station)
station4 = models.OneToOneField(_Station)
station5 = models.OneToOneField(_Station)
station6 = models.OneToOneField(_Station)
def set_station(self, num, val):
try:
setattr(self, 'station{0}'.format(num), val)
except AttributeError:
raise RadioHasNotStationError("The radio has not station {0}".format(num))
def get_station(self, num):
try:
result = getattr(self, 'station{0}'.format(num))
except AttributeError:
raise RadioHasNotStationError("The radio has not station {0}".format(num))
...
@staticmethod
def get_inst():
try:
result = Radio.objects.select_related().get(id = 1)
except Radio.DoesNotExist:
result = Radio.create()
return result
radio = Radio.get_inst()
radio.station1 = new_station
# ...
radio.set_station(5, new_station2)
# ...
station4 = radio.get_station(4)
# ...
radio.save()
관련 문제
- 1. 목록의 색인 수를 제한하십시오.
- 2. 문자열의 문장 수를 제한하십시오.
- 3. Django - 모델의 항목을 제한하십시오 .ForeignKey()
- 4. 추가 된 문자열 수를 제한하십시오.
- 5. 클래스의 DIRECT 인스턴스 수를 제한하십시오.
- 6. OneToMany 관계에있는 항목의 수를 제한하십시오.
- 7. 모델의 필드 당 고유 레코드 수를 출력하는 쿼리?
- 8. 다른 모델의 레코드 삭제
- 9. 사용자 당 동시 wcf 세션 수를 제한하십시오.
- 10. NSDictionary keysOfEntriesPassingTest를 사용하여 결과의 수를 제한하십시오.
- 11. 그리드 뷰의 이미지 디스플레이 수를 제한하십시오.
- 12. 테이블에서 행의 수를 제한하십시오. (Ms- 워드)
- 13. 페이지에서 볼 수있는 스레드 수를 제한하십시오.
- 14. CodeIgniter 활성 레코드 캐시를 하나의 객체에만 제한하십시오.
- 15. 모델의 마지막 레코드. Linq 사용
- 16. 활성 레코드 - has_one 모델의 조건은?
- 17. 관련 모델의 레코드로 레코드 찾기
- 18. 각 테이블의 레코드 수를 얻으시겠습니까?
- 19. 테이블의 레코드 수를 인쇄 하시겠습니까?
- 20. node.js-MySQL 레코드 수를 계산하십시오.
- 21. mysql은 매월 레코드 수를 선택합니다.
- 22. PostgreSQL에서 레코드 수를 반환하는 방법
- 23. 정적 변수를 사용하지 않고 클래스의 인스턴스 수를 제한하십시오.
- 24. Wordpress 블로그 홈 페이지에 표시된 글의 수를 제한하십시오.
- 25. 컨텍스트 메뉴에서 보이는 메뉴 항목/항목의 수를 제한하십시오.
- 26. Android : 한 번에 편집 가능한 EditText 필드의 수를 2로 제한하십시오.
- 27. 레일 3.1은 하위 모델의 수를 제한합니다
- 28. 숨겨진 마코프 모델의 상태 수를 최적화하는 R
- 29. named_scope와 자식 모델의 수를 함께 사용하기
- 30. CakePHP : 관련 모델의 필드를 기반으로 레코드 검색
모든 데이터베이스 백엔드에 행 제한 기능이 있다고 생각하지 않지만 왜 데이터베이스 수준에서이 옵션을 원하십니까? 프로그램을 사용하는 사람들이 db에 직접 액세스합니까? 한계를 처리하기 위해 모델 저장 또는 양식 저장 기능을 사용할 수없는 이유는 무엇입니까? –
명확한 질문 : 영구적 인 스테이션 번호 또는 사용자가이 번호를 구성 할 수 있습니까? – sergzach
영구적 인 번호로 구성 할 수 없습니다. –