2014-06-11 4 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' 

:

내 모델입니다

+0

당신이 해봤

tab_assoc : id_tab id_form id_field number 

가 귀하의 답변 주셔서 감사합니다'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

그것은 나던 일을하지 않는다. 하나의 객체 탭을 저장할 수 있지만 양식 객체 양식에 "탭/양식"연결을 저장하려고하면 django가이 오류를 표시합니다. "AttributeError at/form/edit/2/ ManyToManyField 중간 모델을 지정합니다. 대신 Tab의 관리자를 사용하십시오. " – djangopuccino

+0

친절하게 이해를 위해 이것 좀 봐 http://stackoverflow.com/questions/3091328/django-cannot-setvalue-on-a-manytomanyfield-which-specifies-an-intermediary-mo 여기에 데이터를 저장하는 방법을 알려주는 케이스. –

+0

이렇게 모델을 저장하십시오. 탭 = 탭 (필드 = YOURFIELD, 양식 = YOURFORM); tab.save() –

관련 문제