2014-06-11 70 views
2

我想创建一个模型,它有两个manytomanyfield。我不'想让Django创建两个关联表,但是对于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 

谢谢你的答案

+0

你试过'through'参数? https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships – freakish

+0

是的,我已经看过参数,但它似乎不是这个案例。你知道,我只是想要一个关联表引用两个模型.. – djangopuccino

回答

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) 
+0

它不工作。我可以保存一个对象Tab,但是当我在表单对象窗体中保存关联“选项卡/窗体”时,django会给出此错误: “AttributeError at/form/edit/2/ 无法设置ManyToManyField它指定了一个中介模型,而是使用Tab的Manager。“ – djangopuccino

+0

亲切看待这理解http://stackoverflow.com/questions/3091328/django-cannot-set-values-on-a-manytomanyfield-which-specifies-an-intermediary-mo在这里告诉如何保存数据在这案件。 –

+0

保存你的模型是这样的。 tab = Tab(field = YOURFIELD,form = YOURFORM); tab.save() –