Skip to main content
 首页 » 编程设计

python之如何制作具有交叉关系的两个 Django 模型

2025年05月04日47fff_TT

我需要两个 Django 模型:第一个是Users,第二个是Projects。

在它们之间我需要与附加字段的多对多关系。

如何使下面的代码工作?

from django.db import models 
 
class User(models.Model): 
 
    name = models.CharField('Name', max_length=50) 
    projects = models.ManyToManyField(Project, through='UserProjects') 
 
    def __str__(self): 
        return self.name 
 
class Project(models.Model): 
 
    name = models.CharField('Name', max_length=50) 
    users = models.ManyToManyField(User, through='UserProjects') 
 
    def __str__(self): 
        return self.name 
 
class UserProjects(models.Model): 
 
    user = models.ForeignKey(User) 
    project = models.ForeignKey(Project) 
    is_active = models.BooleanField('Active') 

最后 User.projects 应该为指定的 User 返回 Projects 同样,Project.users 应该为指定的Project 返回Users。

请您参考如下方法:

两边不用放m2m字段 Jussi 选择一个,Django 会自动为另一个方向创建反向关系。