문제

나는 2 명이 서로 베팅 할 수 있도록 응용 프로그램을위한 모델을 설계하려고 노력하고 있습니다. 내가 궁금한 점은 BET를 사용자와 연결하는 방법입니다. 구조는 다음과 같습니다

|-------------|       |----------|
|    Bet      |       | User     |
| BetUser1    |       |----------|
| BetUser2    |
| Winner      |
| ...         |
|-------------|

그래서 우리는 서로 베팅하는 2 명을 얻었습니다 (둘 다 Users Django Auth System에서)와 그 중 하나가 승리 한 후에는 승자가 있습니다. 이제이 3 개의 필드는 모두 유형입니다 User, 하지만:

  • Betuser1과 Betuser2 별도의 필드를 만들거나 여기서 다중 관계를 설계해야합니까? (다중에서 두 가지가 많고 외부 방식으로 2 명 이상을 보장하지 않습니다. Users 각 베팅에 할당 할 수 있습니까?
  • 당첨자는 사용자 1 또는 사용자 2 일 수 있습니다. 이 필드를 어떻게 만들어야 하는가? ForeignKey(User), 또는 다른 것?

어리석은 경우에 나는 Django 모델 시스템에 붙어있는 것처럼 보이기 때문에 새로운 관점을 찾고 있습니다.

도움이 되었습니까?

해결책

나는 아마도 누군가가 배치 한 특정 베팅을 나타내는 세 번째 모델을 추가 할 것입니다. 다음과 같이 보일 것입니다.

USER        WAGER              BET
             User (FK(User))    Description
             Bet  (FK(Bet))     Winner (FK (Wager), null=True)
             Amount

Django는 자동으로 생성됩니다 user.wager_set 그리고 bet.wager_set 외국 키를 기반으로합니다. 이를 통해 각 사용자의 베팅뿐만 아니라 베팅 용 베팅을 쉽게 반복하고 표시 할 수 있습니다. 당신은 또한 추가 할 수 있습니다 unique_together 제약 User 그리고 Bet 베팅 테이블에서 각 사용자가 하나의 베팅 만 할 수 있도록.

베팅이 모두 완료되고 승자가 선택되면 bet.winner.

당신이 그것을 달리는 경우, 당신은 경고를 볼 수 있습니다. related_name 가지고 있습니다 Bet 가리키다 Wager 그리고 Wager 가리키다 Bet. 수정하려면 추가하십시오 related_name=wagers 에게 Wager.bet.

다른 팁

필요한 것은 추가 데이터와 다수의 관계입니다 (예 : 베팅 금액, 입력 시간, ...)

이있다 챕터 이것에 대한 우수한 Django Docs에서는 모델 작성 모델에서.

타일러는 이미 이에 대한 적절한 스키마를 설명했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top