我的应用程序中有一个实体,它有一些属性,比如、auth.User、,但是它也有一些额外的属性。所以我和auth.User建立了一个auth.User关系
class UserEntity(models.Model):
user = models.OneToOneField(User)
... other fields ...我还创建了一个Person模型,即UserEntity,它是这样创建的:
class Person (models.Model):
userEntity = models.OneToOneField(UserEntity)
... other fields ...有许多不同的属性,如地址,经验,教育和其他细节,我想联系我的人。Person可以有很多地址、经验、教育和专业--我有这样一个专业模型。
class Speciality(models.Model):
name = models.CharField()
code = models.CharField()
... other fields ...问题是如何设计我的数据模型,使我能够检索一个人/用户的所有地址,经验,专业等。我可以联系每个人/用户与专业,因为专业是一个独立的模型,可以存在没有用户。目前,我已经为每个模型创建了另一个模型,例如我创建的专业模型。
class PersonSpeciality(models.Model):
person = models.ForeignKey(Person)
specialities = models.ForeignKey(Speciality)我能用一种更好的方式来设计它吗?这样我就可以有快速的搜索和检索,而且不会乱七八糟。
谢谢
发布于 2015-09-02 09:33:46
如果一个人可以有多个专长,那么您可以通过添加一个oneToMany关系来实现一个foreignKey关系:
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将在DB中创建第三个表来处理这个问题(您不需要编写PersonSpeciality类)。
https://stackoverflow.com/questions/32348146
复制相似问题