当我创建一个模型用于日历应用程序时生成模型

问题描述

|| 我已经建立了几个模型,您很快就会在我的代码中看到。这些模型是时代,年,月,日和小时。 我想要的是,当我创建一个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”方法。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...