2012-08-05 2 views
0

Ok, 그래서 내 unittest에서 특정 필드가 ManyToManyField 개체인지 확인하려고합니다. 다음은 관련 단위 테스트 코드 다음에 원래의 클래스는 다음과 같습니다왜 ManyToMany 필드의 객체 유형이 django에서 초기화 된 후에 변경됩니까?

class Course(models.Model): 
    name = models.CharField(max_length=150) 
    studyunits = models.ManyToManyField(StudyUnit) 

class CourseManyToManyTest(VocabTestCase): 
    fixtures = ['m2mtest.json'] 

    def setUp(self): 
     self.course = Course.objects.create(name="Course2") 
     self.studyunit1 = StudyUnit.objects.all()[0] 
     self.studyunit2 = StudyUnit.objects.all()[1] 

    def testStudyUnitsAddDelete(self): 
     self.assertIsInstance(self.course.studyunits, models.ManyToManyField) 

그 테스트는 다음과 같은 오류와 함께 실패 : 나는 이것을 확인하는 바보 같은 것 알고

self.assertIsInstance(self.course.studyunits, models.ManyToManyField) 
AssertionError: <django.db.models.fields.related.ManyRelatedManager object at 0x102853690>  is not an instance of <class 'django.db.models.fields.related.ManyToManyField'> 

,하지만 난이 버그를 발견 ManyToManyField를 확장하려고 할 때, 왜 객체의 클래스가 변경되는지 궁금합니다. 약간의 마술처럼 보입니다. 설명은 무엇입니까?

답변

0

장고의 입력란은 descriptors이며 입력란 자체는 반환하지 않고 필드가 보유하거나 나타내는 객체 (예 : IntegerField은 정수를 반환)입니다.

+0

아 감사합니다. – HaskellMan

관련 문제