我的应用程序中有一个实体,它有一些属性,如 auth.User ,但它还有一些额外的属性。所以我用 auth.User
创建了OneToOne关系 class UserEntity(models.Model):
user = models.OneToOneField(User)
... other fields ...
我还有一个 UserEntity 的Person模型,因此创建它:
class Person (models.Model):
userEntity = models.OneToOneField(UserEntity)
... other fields ...
我希望与我的人员关联,有很多不同的属性,如地址,经验,教育和其他细节。 人可以拥有许多地址,经验,教育和专业 我有这样的专业模型。
class Speciality(models.Model):
name = models.CharField()
code = models.CharField()
... other fields ...
问题是我应该如何设计我的数据模型,以便我可以检索具有所有地址,经验,专业等的人/用户。我可以将每个人/用户与专业相关联,因为专业是一个独立的模型并且可以存在没有用户。目前我为每个我创建的专业创建了另一个模型
class PersonSpeciality(models.Model):
person = models.ForeignKey(Person)
specialities = models.ForeignKey(Speciality)
我可以更好地设计它,这样我就可以快速搜索和检索并且没有混乱。
谢谢
答案 0 :(得分:1)
如果一个Person可以拥有多个Specialties,那么只需添加一个foreignKey即可实现oneToMany关系:
class Speciality(models.Model):
name = models.CharField()
code = models.CharField()
person = models.ForeignKey(Person)
但是,如果你有几个人具有相同的专业(让我们说10个人是画家),你会有10个不同的画家参赛作品。
为避免重复,您可以实现ManyToMany关系:
class Speciality(models.Model):
name = models.CharField()
code = models.CharField()
person = models.ManyToManyField(Person)
Django将在您的数据库中创建第三个表来处理(您不需要编写PersonSpeciality类)。