Django 两个多对多字段一个关联表

2 投票
1 回答
2386 浏览
提问于 2025-04-18 09:25

我想创建一个模型,这个模型里有两个多对多的字段。我不想让Django为这两个多对多字段各自创建一个关联表,而是希望它们使用同一个关联表。

这是我的模型:

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

1 个回答

2

这段内容是关于编程问题的讨论,可能涉及一些技术细节和解决方案。它的目的是帮助那些在编程过程中遇到困难的人。下面是一些关键点:

首先,大家在讨论一个特定的编程问题,可能是某段代码运行不正常,或者是某个功能没有达到预期效果。参与讨论的人会分享他们的经验和解决方法。

其次,可能会提到一些常见的错误,或者是如何调试代码的方法。调试就是找出代码中哪里出错了,并进行修正。

最后,大家可能会给出一些建议,比如使用某些工具,或者是改写代码的方式,以便让程序运行得更顺利。

总之,这段内容是为了帮助编程初学者理解如何解决他们在编程过程中遇到的问题。

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)

撰写回答