Skip to main content
 首页 » 编程设计

python之Django 两个manytomanyfield 一个关联表

2024年11月01日36mayingbao

我想创建一个模型,它有两个 manytomanyfield。我不希望 Django 创建两个关联表,而是为两个 manytomanyfield 创建相同的关联表。

这是我的模型:

class Tab(WModel): 
    forms = models.ManyToManyField('Form', null=True, blank=True) 
    fields = models.ManyToManyField('Field', null=True, blank=True) 
    number = models.IntegerField(null=True, blank=True) 
 
    class Meta: 
        db_table = 'tab' 

我只想创建这个关联表:

tab_assoc : 
   id_tab 
   id_form 
   id_field 
   number 

请您参考如下方法:

class Field(models.Model): 
    name = models.CharField(max_length=128) 
 
    def __str__(self):              # __unicode__ on Python 2 
        return self.name 
 
class Form(models.Model): 
    name = models.CharField(max_length=128) 
    fields = models.ManyToManyField(Field, through='Tab') 
 
    def __str__(self):              # __unicode__ on Python 2 
        return self.name 
 
class Tab(models.Model): 
    field = models.ForeignKey(Field) 
    form = models.ForeignKey(Form)