Skip to main content
 首页 » 编程设计

python之Django之没有交叉表的多对多关系

2025年04月02日45lonelyxmas

我有 2 个模型:城市和服务。每个城市记录可以包含许多服务,每个服务可以链接到每个城市。

class City(models.Model): 
    name = models.CharField(max_length=255, unique=True) 
 
class Service(models.Model): 
    name = models.CharField(max_length=255, unique=True) 
 
class CityService(models.Model): 
    city = models.ForeignKey(City) 
    service = models.ManyToManyField(Service) 

我使用 ManyToManyField 在 Django 管理中启用多重选择。 但是 Django 又创建了一个表来存储 m2m 关系..

是否可以配置 Django 模型以达到以下表结构:

+----+---------------+------------+ 
| id | city_id       | service_id | 
+----+---------------+------------+ 
|  1 |             1 |         1  | 
|  2 |             1 |         2  | 
|  3 |             2 |         3  | 
+----+---------------+------------+ 

请您参考如下方法:

为什么不直接使用这样的结构:

class Service(models.Model): 
    name = models.CharField(max_length=255, unique=True) 
 
class City(models.Model): 
    name = models.CharField(max_length=255, unique=True) 
    service = models.ManyToManyField(Service)