回顾我的Django模型 - 需要很多建议

rh0*_*ium 1 python django coding-style django-models

我正在提取各种信息来源以建立一个人的个人资料.一旦我这样做,我希望能够灵活地以不同的方式看待一个人.我在django中没有太多的空洞,所以我想对我的模型进行批评(温柔).不可否认,即使我编码这个,我也在考虑裁员(反对DRY),但我想知道其他人的想法.FWIW - 这个数据没有被创建 - 所以也许我不应该保留所有数据,但丢弃数据似乎很糟糕..

具体来说,我想知道ManyToMany的使用是否合适,或者您只是KISS并将每个条目保留为自己没有任何ManyToMany业务.从长远来看,我认为KISS会使更新变得简单(基本的循环),但是能否查询一个人(比如基于location_description或job_function)会有一个权衡.无论如何,我会很感激一些输入.

class Person(models.Model):

    """This simply builds a notes user"""

    aliases = models.ManyToManyField(Aliases)  #Hmm this is list..
    assistant = models.CharField(max_length = 255, blank = True)
    cell_phone = models.CharField(max_lenth = 16, blank = True)
    city = models.ManyToManyField(City)
    country = models.ManyToManyField(County)
    department = models.ManyToManyField(Department)
    departmeht_number = models.ManyToManyField(Department_Number)
    division_code = models.ManyToManyField(Division_Code)
    email = models.EmailField(max_length = 50)
    functional_area = models.ManyToManyField(Functional_Area)
    # jpeg = models.
    job_classification = models.ManyToManyField(Job_Classification)
    job_classification_code = models.ManyToManyField(Job_Classification_Code)
    last_name = models.CharField(max_length = 255)
    location_description = models.ManyToManyField(Location_Description)
    location_path = models.ManyToManyField(Location_Path)
    mail_address = models.CharField(max_length = 255, blank = True)
    mail_domain = models.ManyToManyField(Mail_Domain)
    mail_file = models.CharField(max_length = 255, blank = True)
    mail_server = models.ManyToManyField(Mail_Server)
    match_pct = models.CharField(max_lenth = 6)
    name = models.CharField(max_length = 255)
    name_reverse = models.CharField(max_length = 255)
    nickname = models.CharField(max_length = 32)
    notes_url = models.URLField()
    #    object_class = models.
    office_phone = models.CharField(max_length = 255, blank = True)
    other_phone = models.CharField(max_length = 255, blank = True)
    position = models.ManyToManyField(Position)
    section = models.ManyToManyField(Section)
    section_code = models.ManyToManyField(SectionCode)
    shift = models.ManyToManyField(Shift)
    state = models.ManyToManyFiedl(State)
    supervisor = models.ManyToManyField(Supervisor)
    supervisor_reverse = models.ManyToManyField(Supervisor_reverse)
    uid = models.CharField(max_length = 128)

    def __unicode__(self):
        return str(self.name)
Run Code Online (Sandbox Code Playgroud)

Vik*_*ica 5

__unicode__ 应该返回unicode

def __unicode__(self):
       return u'%s' %self.name
Run Code Online (Sandbox Code Playgroud)

Django提供完整地址的电子邮件地址:

mail = models.EmailField()
Run Code Online (Sandbox Code Playgroud)

我认为,地址模型可能是满满的.一个人可以有几个地址(工作,家庭......)

编辑

我刚刚看到,你正在使用emailfield.

这个是来做什么的:

mail_address = models.CharField(max_length = 255, blank = True)
mail_domain = models.ManyToManyField(Mail_Domain)
mail_file = models.CharField(max_length = 255, blank = True)
mail_server = models.ManyToManyField(Mail_Server)
Run Code Online (Sandbox Code Playgroud)

编辑

您不必一直使用ManyToManyFields.查看ForeignKey,OneToOneField和通用框架