저는 게임 웹 사이트를 작성하고 있습니다. 여기에서 추첨은 4 자리 숫자로 이루어집니다. 예를 들어 1234django에서 가능한 모든 4 개의 정수 조합을 선택하는 쿼리를 작성하는 방법은 무엇입니까?
내가 입력 한 4 자리 숫자를 기준으로 모든 승자를 선택하는 쿼리를 작성하려고합니다. 승자는 같은 숫자 또는 동일한 조합의 조합입니다 1 2 3 4, 2 3 1 4 4 1 3 2 모두 승자입니다.
방법이 쿼리를 작성하는 가장 효율적인 방법입니다.--------------------- 편집 모델 샘플을 제공하지 죄송 여기 아래에있다 : -----------
class Draw(models.Model):
digit1 = models.PositiveSmallIntegerField(null=True,blank=True)
digit2 = models.PositiveSmallIntegerField(null=True,blank=True)
digit3 = models.PositiveSmallIntegerField(null=True,blank=True)
digit4 = models.PositiveSmallIntegerField(null=True,blank=True)
draw_date = models.DateTimeField()
closed = models.BooleanField()
winner = models.BooleanField()
def __unicode__(self):
return "Draw For Week Ending %s" %(self.draw_date)
def get_absolute_url(self):
return "/draw/%s/" % (self.draw_date)
def save(self, force_insert=False, force_update=False):
if self.digit1 and self.digit2 and self.digit3 and self.digit4:
#check if there are winners
try:
winners = Ticket.objects.filter(draw=self.id,digit1=self.digit1,digit2=self.digit2,digit3=self.digit3,digit4=self.digit4)
self.winner = True
except Ticket.DoesNotExist:
self.winner = False
#close & save draw/winners
self.closed = True
# Add new Draw for following week.
new_date = self.draw_date + datetime.timedelta(hours=168)
new_draw= Draw(draw_date=new_date)
new_draw.save()
super(Draw, self).save(force_insert, force_update) # Call the "real" save() method.
class Serial(models.Model):
serial = models.CharField(max_length=4)
closed = models.BooleanField(unique=False)
def __unicode__(self):
return "%s" %(self.serial)
def get_absolute_url(self):
return "/draw/serial/%s/" % (self.serial)
class Ticket(models.Model):
draw = models.ForeignKey(Draw)
digit1 = models.PositiveSmallIntegerField()
digit2 = models.PositiveSmallIntegerField()
digit3 = models.PositiveSmallIntegerField()
digit4 = models.PositiveSmallIntegerField()
date = models.DateField(auto_now_add=True,editable=False)
active = models.BooleanField(default=True)
serial_used = models.ForeignKey(Serial,related_name="ticket_serial_used")
def __unicode__(self):
return "#: %s - %s" %(self.id,self.draw)
def get_absolute_url(self):
return "/ticket/%s/" % (self.id)
def save(self, force_insert=False, force_update=False):
if self.serial_used:
serial = Serial.objects.get(pk=self.serial_used.id)
serial.closed = True
serial.save()
super(Ticket, self).save(force_insert, force_update) # Call the "real" save() method.
어떻게 번호를 선택한 플레이어를 저장 측면에서 귀하의 모델 설정은? – lemonad
모델을 보지 않고도 대답 할 수 없습니다. –
위의 모델 선언을 참조하십시오. Save 메서드가 Draw 모델에서 재정의되었을 때 승자인지 확인하려고합니다. – Rasiel