假设我有项目和经理模型。
var user = await _userManager.FindByNameAsync(context.UserName);
if (user == null) {
user = await _userManager.FindByEmailAsync(context.UserName);
}
具有不同名称和角色的经理可以拥有相同的项目。
PostgreSQL为此实现提供了ArrayField。但我想要一个适用于任何数据库的解决方案。任何替代解决方案都会非常值得注意。
答案 0 :(得分:0)
您使用多对一关系,在Django中可以通过在Project上定义指向Manager的ForeignKey来完成。
答案 1 :(得分:0)
在Django中,您可以使用ForeignKey模型字段定义多对一关系,然后,框架将自动为您创建反向关系。
screen
现在您的API可以用作:
class Project(models.Model):
name = models.CharField(max_length=50)
manager = models.ForeignKey('Manager', related_name='projects')
class Manager(models.Model):
name = models.CharField(max_length=50)
请注意,我们在Project对象的Many侧定义了my_manager = Manager(name='Hasanul')
project_one = Project(name='foo', manager=my_manager)
project_two = Project(name='bar', manager=my_manager)
# you can use the reverse relationship (defined with a related name).
# note that it won't return an Array, it's a QuerySet object, that
# behaves like an array.
my_manager.projects.all() # [Project<name: 'foo'>, Project<name: 'bar'>]
# or the direct one:
project_one.manager # Manager<name: 'Hasanul'>
。
答案 2 :(得分:0)
您所说的是经理可以管理多个项目。如果您的业务逻辑允许项目拥有多个经理,那么项目与经理之间的关系为Many-To-Many relationship。否则,您有Many-to-one relationship