Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模型:如何处理概念上相似的想法和一些重复的元素_Python_Django_Database - Fatal编程技术网

Python Django模型:如何处理概念上相似的想法和一些重复的元素

Python Django模型:如何处理概念上相似的想法和一些重复的元素,python,django,database,Python,Django,Database,我不熟悉Django和数据库 假设我正试图创建一个数据库,其中包含随着时间推移各种贵族的信息。因此,将有许多不同的国家可能有“君主”的地位,在不同的时间由不同的人,男性和女性持有。几个国家可能称之为国王/女王,而只有一个国家可能称之为沙皇/沙皇。但这些都是固定的。 我对模特的最初印象可能是 class Person(models.Model): SEX_CHOICES = ( 'm': 'Male', 'f': 'Female' ) nam

我不熟悉Django和数据库

假设我正试图创建一个数据库,其中包含随着时间推移各种贵族的信息。因此,将有许多不同的国家可能有“君主”的地位,在不同的时间由不同的人,男性和女性持有。几个国家可能称之为国王/女王,而只有一个国家可能称之为沙皇/沙皇。但这些都是固定的。 我对模特的最初印象可能是

class Person(models.Model):
    SEX_CHOICES = (
        'm': 'Male',
        'f': 'Female'
    )
    name = models.CharField(max_length=200)

    birthdate = models.DateField()
    sex = models.CharField(max_length = 2, choices = SEX_CHOICES)

    titles = models.ManyToManyField(Title, through='TitleOccupation')

class Country(models.Model):
    #...

class Title(models.Model):
    country = models.ForeignKey(Country)
    #...


class TitleOccupation(models.Model):
    title = models.ForeignKey(Title)

    date_start = models.DateField()
    date_end = models.DateField(null = True, blank=True)
我试图找出如何将一个国家名称的独特性结合起来,同时认识到它们之间有许多相似之处。头衔可能代表“英格兰的君主”,君主如果是男性则称为国王,如果是女性则称为女王。可能还有许多其他国家的君主被称为国王或王后,但也有一些独特的头衔代表了其他国家的相同想法。 我曾想过加入一些额外的模型,比如说代表君主制的位置,然后不知何故在其中加入名字前缀(国王等)的选择。但我似乎产生了更多的体积

class Position(model.Model):
    #...

    TITLES_MALE = (
        'King',
        'Tsar',
        'Emperor',
        ...
    )

    TITLES_FEMALE = (
        'Queen',
        'Tsarina',
        'Empress',
        ...
    )
同时,不那么尴尬的选择可能是为每个标题添加一个男性和女性姓名前缀。但这真的不那么尴尬吗?也许这会导致在尝试显示一个人的名字时浪费大量的空间和时间

p = Person.objects.get(name='???')
p.get_title(p.titles.filter(...))
其中,
get_title
是Person模型中的某种方法,它根据人的性别在男性或女性集合中查找标题的名称前缀。这对我来说似乎同样尴尬

我已经研究了Django的一些本地化信息,以获得一些见解,但我无法真正将其中任何信息推断为这种语言内部的“本地化”。

定位W3字段。级别(国王、伯爵、公爵……)作为FK表示NobilityLevel。性别、语言/国家。PositionTitle是一个带有title的查找,其中存储国王、女性和俄罗斯人的tsarina。此外,头衔也会随着时间的推移而变化。