问题描述
||
我已经建立了几个模型,您很快就会在我的代码中看到。这些模型是时代,年,月,日和小时。
我想要的是,当我创建一个Era时,它会创建一组Years,然后依次创建Months,创建Days和Days。我敢肯定,如果有人可以说“从时代到年”的步骤来帮助我解决方法问题,那么我可以弄清楚其中的大部分内容。
然后的目标是让CurrentTime模型能够遍历所有其他模型(基本上像时钟一样)。
如果您想知道,我将尝试以此为基础制作一个简单的基于Web的游戏,这就是为什么值与常规日历有些不同的原因!
所以这是我的models.py文件:
from django.db import models
# Create your models here.
DAY_LENGTH = 24 #1 day is 24 hours
MONTH_LENGTH = 24 #1 month is 24 days
MONTH_CHOICES = (
(1,\'January\'),(2,\'Febuary\'),(3,\'march\'),(4,\'April\'),(5,\'May\'),(6,\'June\'),(7,\'July\'),(8,\'August\'),(9,\'September\'),(10,\'October\'),(11,\'November\'),(12,\'December\'),(13,\'Extravember\'),(14,\'Othertober\'),)
DAY_CHOICES = (
(1,\'Monday\'),\'Tuesday\'),\'Wednesday\'),\'Thursday\'),\'Friday\'),\'Saturday\'),)
YEAR_LENGTH = MONTH_CHOICES.length #1 year contains
ERA_LENGTH = 9999 #1 era is 9999 years #one of every month
NUMBER_OF_BLOCKS = 6 #Number of discreet actions programmable for a day
BLOCK_LENGTH = DAY_LENGTH / NUMBER_OF_BLOCKS
class Era(models.Model):
#Era number
value = models.AutoField()
#Name of the Era
name = models.CharField(max_length=50)
def __unicode__(self):
return \"Era of \" + self.name
class Year(models.Model):
#Year number
value = models.PositiveSmallIntegerField(max_value=9999)
#Era the year belongs to
era = models.ForeignKey(\'Era\')
length = YEAR_LENGTH
def __unicode__(self):
return \"Year \" + self.value + self.era
class Month(models.Model):
#Should return name of month
value = models.PositiveSmallIntegerField(
choices=MONTH_CHOICES)
#Year that the month fits into
year = models.ForeignKey(Year)
def __unicode__(self):
return self.value \" of \" + self.year
class Day(models.Model):
#Should give the name of the day
name = models.PositiveSmallIntegerField(
choices = DAY_CHOICES)
#Month that the day belongs to
month = models.ForeignKey(\'Month\')
#Day number,dependant on month length
value = models.PositiveSmallIntegerField(
max_value = month.length)
def __unicode__(self):
return self.name + \",day \" + self.value + \" of \" + self.month
class Hour(models.Model):
value = models.PositiveSmallIntegerField(
max_value = DAY_LENGTH)
day = models.ForeignKey(\'Day\')
def __unicode__(self):
return self.value + \":00,\" + self.day
class CurrentTime(models.Model):
hour = ForeignKey(\'Hour\')
day = ForeignKey(\'Day\')
month = ForeignKey(\'Month\')
year = ForeignKey(\'Year\')
era = ForeignKey(\'Era\')
def __unicode__(self): #!!will only work for current config!
return self.hour
我确定这很乱...但是无论如何,请帮我弄清楚我的代码!还有您想给我的其他帮助,我也很感激!
解决方法
在6个表中存储数据结构是过大的。您不会在三个不同的表中存储字符串\“ abc \”。因此,我认为您设计中的某些地方是错误的。
试着尽可能简单地编写您的问题,然后在SO处将其与解决方案一起发布。
您的实现和ѭ1肯定有其他选择
>>> import this
...
If the implementation is hard to explain,it\'s a bad idea.
If the implementation is easy to explain,it may be a good idea.
...
如果您要-根据任何建议;-)-使用上述模型,请覆盖模型的“ 3”方法。