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